Govern task context and advance execution pointer
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 06:02:43 -04:00
parent 380cbed4ff
commit 10640aeb3c
984 changed files with 543475 additions and 327 deletions

View File

@@ -1,9 +1,9 @@
# M12-07H Status
status: done
task: PLY vertex/face/color/custom property mapping and unknown property loss report
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: PLY vertex/face/color/custom property mapping and unknown property loss report
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M12-07I Status
status: done
task: PLY big-endian, malformed list, and oversized count stable blocking
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: PLY big-endian, malformed list, and oversized count stable blocking
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M12-07J Status
status: done
task: three-format cancellation, OOM, Worker restart, and small-file recovery
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: three-format cancellation, OOM, Worker restart, and small-file recovery
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-01A Status
status: done
task: inventory Text, Python Console, autorun, driver expression, handler, and add-on entry points
updated: 2026-08-18 America/New_York
enablingTask: true
status: done
task: inventory Text, Python Console, autorun, driver expression, handler, and add-on entry points
updated: 2026-08-18 America/New_York
enablingTask: true
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-01B Status
status: done
task: read script metadata on `.blend` open without executing arbitrary content
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: read script metadata on `.blend` open without executing arbitrary content
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-01C Status
status: done
task: default-deny autorun, register, install, and driver execution policy codes
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: default-deny autorun, register, install, and driver execution policy codes
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-01D Status
status: done
task: UI direct-eval bypass gate
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: UI direct-eval bypass gate
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-01E Status
status: done
task: preserve Text data and unknown script sources through save/reopen
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: preserve Text data and unknown script sources through save/reopen
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-01F Status
status: done
task: malicious Text, driver, handler, and embedded-module fixtures
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: malicious Text, driver, handler, and embedded-module fixtures
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-02A Status
status: done
task: bounded script manifest limits
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: bounded script manifest limits
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-02B Status
status: done
task: canonical script manifest serialization
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: canonical script manifest serialization
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-02C Status
status: done
task: signer identity, key rotation, revocation and timestamp policy
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: signer identity, key rotation, revocation and timestamp policy
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-02D Status
status: done
task: signature verification binds declared content
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: signature verification binds declared content
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-02E Status
status: done
task: permission default-minimization and unknown-permission blocking
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: permission default-minimization and unknown-permission blocking
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-02F Status
status: done
task: signature replay, key-confusion and expiry negative cases
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: signature replay, key-confusion and expiry negative cases
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03A Status
status: done
task: sandbox capability scope
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: sandbox capability scope
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03B Status
status: done
task: sandbox CPU, wall, memory, message and output budgets
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: sandbox CPU, wall, memory, message and output budgets
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03C Status
status: done
task: explicit host-call allowlist and structured parameters
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: explicit host-call allowlist and structured parameters
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03D Status
status: done
task: sandbox crash/timeout isolation
updated: 2026-08-18 America/New_York
enablingTask: false
status: done
task: sandbox crash/timeout isolation
updated: 2026-08-18 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03E Status
status: done
task: sandbox cancellation result gate
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: sandbox cancellation result gate
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03F Status
status: done
task: sandbox resource disposal gate
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: sandbox resource disposal gate
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-03G Status
status: done
task: same-session sandbox recovery and audit continuity
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: same-session sandbox recovery and audit continuity
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04A Status
status: done
task: server job one-shot directory
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: server job one-shot directory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04B Status
status: done
task: server source read-only and output isolation
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: server source read-only and output isolation
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04C Status
status: done
task: server job resource budget gate
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: server job resource budget gate
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04F Status
status: done
task: bounded and redacted server stdout/stderr
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: bounded and redacted server stdout/stderr
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04G Status
status: done
task: server process-tree cancellation
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: server process-tree cancellation
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04H Status
status: done
task: stable server process fault codes
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: stable server process fault codes
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04I Status
status: done
task: server result hash binding and atomic OPFS handoff
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: server result hash binding and atomic OPFS handoff
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-04J Status
status: done
task: server request idempotency and conflict isolation
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: server request idempotency and conflict isolation
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-05A Status
status: done
task: CSP default-deny policy
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: CSP default-deny policy
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-05B Status
status: done
task: resource-specific CSP policy
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: resource-specific CSP policy
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-05C Status
status: done
task: production/build/test dependency inventories
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: production/build/test dependency inventories
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Evidence

View File

@@ -1,9 +1,9 @@
# M13-05D Status
status: done
task: dependency severity gates and exceptions
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: dependency severity gates and exceptions
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
The severity policy is machine-readable: BLOCKER/HIGH block, MEDIUM requires review and LOW is tracked.

View File

@@ -1,9 +1,9 @@
# M13-05E Status
status: done
task: SBOM/license/source-offer and archive binding
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: SBOM/license/source-offer and archive binding
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
The supply-chain checker binds SPDX 2.3 to the lockfile and notices hashes, verifies the corresponding

View File

@@ -1,9 +1,9 @@
# M13-05F Status
status: done
task: malicious input matrix
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: malicious input matrix
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
The production blend loader rejected five malformed blend cases. Existing production protocol tests

View File

@@ -1,9 +1,9 @@
# M13-05G Status
status: done
task: fuzz crash minimization and regression capture
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: fuzz crash minimization and regression capture
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M13-05H Status
status: done
task: script audit record integrity
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: script audit record integrity
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-01A Status
status: done
task: Chromium, engine and archive identity freeze
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium, engine and archive identity freeze
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-01B Status
status: done
task: Firefox capability probe
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Firefox capability probe
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
Firefox `153.0` was probed against the rebuilt production assets with COOP/COEP isolation. WASM, Worker,

View File

@@ -1,9 +1,9 @@
# M14-01C Status
status: done
task: WebKit capability probe
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: WebKit capability probe
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
WebKit `26.5` was probed against the rebuilt production assets with COOP/COEP isolation. WASM, Worker,

View File

@@ -1,9 +1,9 @@
# M14-01D Status
status: done
task: probe identity and GPU/OS adapter recording
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: probe identity and GPU/OS adapter recording
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-01E Status
status: done
task: Chromium WebGPU fail-closed boundary
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium WebGPU fail-closed boundary
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-04A Status
status: done
task: Chromium GPU/memory budget device tier selection
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium GPU/memory budget device tier selection
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-04B Status
status: done
task: Chromium DPR 1/1.5/2/3 canvas and raycast consistency
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium DPR 1/1.5/2/3 canvas and raycast consistency
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-04C Status
status: done
task: Chromium mouse/touch/pen pointer identity and cancellation contract
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium mouse/touch/pen pointer identity and cancellation contract
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-04D Status
status: done
task: Chromium IME composition guard for incomplete operators
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium IME composition guard for incomplete operators
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

View File

@@ -1,9 +1,9 @@
# M14-04E Status
status: done
task: Chromium US/non-US/dead-key/modifier keymap fixture
updated: 2026-08-19 America/New_York
enablingTask: false
status: done
task: Chromium US/non-US/dead-key/modifier keymap fixture
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope

43
docs/status/M14-04F.md Normal file
View File

@@ -0,0 +1,43 @@
# M14-04F Status
status: done
task: Chromium touch modal cancel, two-finger navigation and pen single commit
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
`InputModalState` is now consumed by both production viewport backends. Touch cancellation clears
the modal without a Main commit, the transition to two active touch pointers increments
`navigationRevision` once, and a pen pointerup increments `mainCommitCount` once. Late pen up/cancel
events do not create another commit. The state is exposed through bounded `data-input-modal-*`
diagnostic attributes for Chromium evidence.
## Evidence
- `npm --prefix web run build` passed.
- `npm --prefix web run test:chromium-input-modal` passed: 3 protocol tests plus real Chromium
main-thread and OffscreenCanvas scenarios.
- Checker output: `chromium-input-modal-ok backends=main,offscreen touchCancel=0 twoFingerRevision=1 penCommit=1 execution=DISABLED next=M14-04G`.
- `npm --prefix web run typecheck`, `npm --prefix web run lint` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `b5fbb86d4a6a610b4aa25f8edb9a232aca9675e25fb47b16de98858a2d7f007f`
- checker: `4f813623d9845b73c1a05aeccaf88d8d3b13d48e5fd83c83fa6222e13324e854`
- protocol: `271e4f9e86a6aa4ebe92a43f6ce3d9b42b0931a5d12d9b40a8b4c26b2808cb23`
- unit: `f8105ebb59f3a369b15282a3923bdc47249f7a727794d3a89c29c1523f1aa989`
- main viewport: `e8d97cb59fd4eca3789aeeb35221a70cf47ef048a5665383d809d0efc49f7119`
- offscreen viewport: `4a210ae247d0e29972096da6c206f3457c2238e6061c6eb622f0ce55c6bfd439`
- report: `dc8c386a705c4cd7335eb5f7ea0ec9d61feaae8b9529fdab423ab00898ecf911`
- manifest: `895b460477a8379594ee93043139b9521952638dbd6670b0205eab1896886455`
## Next Task
`M14-04G`: Chromium responsive layout no-overlap/no-overflow matrix.
## Rollback
Remove the input-modal reducer integration, viewport diagnostics, tests, checker, report, manifest,
package command and this status/task entry; restore `M14-04E` as the queue tail.

43
docs/status/M14-04G.md Normal file
View File

@@ -0,0 +1,43 @@
# M14-04G Status
status: done
task: Chromium responsive layout no-overlap/no-overflow matrix
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The Chromium layout gate now covers main-thread WebGL and OffscreenCanvas Worker viewports at
1440x900, 1280x720, 834x1112 and 390x844 with DPR 1 and 2. It checks root/body horizontal overflow,
layout-band containment, text overflow and app bounds. The mobile breakpoint moved to 900px so the
834px tablet layout hides the desktop menu before it can widen the document.
## Evidence
- `npm --prefix web run build` passed.
- `npm --prefix web run test:chromium-layout` passed: 16 real Chromium combinations (2 backends x
2 DPR values x 4 viewports).
- Checker output: `chromium-layout-ok backends=main,offscreen viewports=4 dpr=1,2 results=16 execution=DISABLED next=M14-04H`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `895b460477a8379594ee93043139b9521952638dbd6670b0205eab1896886455`
- checker: `b211b703309e22810c39f85e4801bc5f0690fa682e33cdcb85157bd28ea042c0`
- app: `92d01daecf3f39bc4ac214e4b651ec6feb687bbfbf58c4d3e602a314cdcc664c`
- CSS: `5961164f29e25b461c03201534fe56e32020633cac6c0970e149a58ba9f6e9fc`
- main viewport: `e8d97cb59fd4eca3789aeeb35221a70cf47ef048a5665383d809d0efc49f7119`
- offscreen viewport: `4a210ae247d0e29972096da6c206f3457c2238e6061c6eb622f0ce55c6bfd439`
- reference e2e: `f5de57f570880f823224ebdcddb2be4d59ec414a32641effdaa68dc1f4102f28`
- report: `65b1050217e2343e656d56c4d7893d13f36b5f07008288ea194a101dafbaa0e2`
- manifest: `a5a80cedd824cc4aac27bd2cec39e11560d4cf3207ab947a1abe19c8bb9e053f`
## Next Task
`M14-04H`: Chromium keyboard-only, accessible names/roles and focus restoration.
## Rollback
Remove the 900px breakpoint change, layout checker, report, manifest, package command and this status/task
entry; restore `M14-04F` as the queue tail.

40
docs/status/M14-04H.md Normal file
View File

@@ -0,0 +1,40 @@
# M14-04H Status
status: done
task: Chromium keyboard-only, accessible names/roles and focus restoration
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The Chromium keyboard gate runs real main-thread and OffscreenCanvas pages. Tab reaches the File
menu, Enter opens it with menuitem focus, Escape restores the trigger, and F3 opens Operator Search
with Escape restoring its trigger. The checker also scans visible interactive elements for an
accessible name and records the count per backend.
## Evidence
- `npm --prefix web run build` passed.
- `npm --prefix web run test:chromium-accessibility` passed for both production backends.
- Checker output: `chromium-accessibility-ok backends=main,offscreen menuFocus=RESTORED operatorSearchFocus=RESTORED names=COMPLETE execution=DISABLED next=M15-01A`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `a5a80cedd824cc4aac27bd2cec39e11560d4cf3207ab947a1abe19c8bb9e053f`
- checker: `b39cdef61007e5ac1f2e7686ccdffd42f6b9723b2e93a7bd63e46800c4453ced`
- app: `5861988f3dfbb8c05d36aee3033a72514de53a0cb4ec6f3d832418ef6b5cc8b2`
- CSS: `5961164f29e25b461c03201534fe56e32020633cac6c0970e149a58ba9f6e9fc`
- reference e2e: `e74a53a1f9e9bfea73be8da1de486938d0dcc4718e7585b57bee27a5ce78a978`
- report: `508adab3c6ced83c95bcced36d610c20f2f2fd456637cb79568b4b824d66ead9`
- manifest: `2c4e4323250f3426f610babb42978ba36c48e471729b20b0ce8f3483eb6f899c`
## Next Task
`M15-01A`: generate a Blender 5.2 RNA data-block type inventory.
## Rollback
Remove the accessibility checker, accessible-name fix, report, manifest, package command and this
status/task entry; restore `M14-04G` as the queue tail.

38
docs/status/M15-01A.md Normal file
View File

@@ -0,0 +1,38 @@
# M15-01A Status
status: done
task: Blender 5.2 RNA data-block type inventory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The pinned Blender 5.2 runtime generated a deterministic RNA inventory from the registered subclasses
of `bpy.types.ID`. The inventory contains 29 unique sorted data-block types, stable parity IDs, the
RNA source anchor and the runtime binary identity. No V1 release or parity status axis changed.
## Evidence
- `npm --prefix web run test:blender-rna-inventory` passed after regenerating in a fresh temporary
directory with `build_blender_5.2.0/bin/blender`.
- Checker output: `blender-rna-datablock-inventory-ok count=29 blender=5.2.0 LTS inventory=98e6c2ebc9f62647b43fb06eff178bef02db06516f6ac87048ae81fcf2d8e792 next=M15-01B`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `2c4e4323250f3426f610babb42978ba36c48e471729b20b0ce8f3483eb6f899c`
- generator: `2e61a1a8a2e5347d3ee0f8efa5bad74e9823de6e7b0959f505e73c9d96e7037b`
- checker: `43b72286964fcfa1f6beebec786c4f96cf12d5d33c6227754e5b98e2dda668ab`
- inventory: `98e6c2ebc9f62647b43fb06eff178bef02db06516f6ac87048ae81fcf2d8e792`
- runtime binary: `d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82`
- manifest: `21f444610edae75b23a26ef9b94892f07fb056344fbd5e92e232c376454d76cd`
## Next Task
`M15-01B`: Blender 5.2 operator idname, poll context and property inventory.
## Rollback
Remove the RNA generator, checker, inventory, report, manifest, package command and this status/task
entry; restore `M14-04H` as the queue tail.

40
docs/status/M15-01B.md Normal file
View File

@@ -0,0 +1,40 @@
# M15-01B Status
status: done
task: Blender 5.2 operator idname/poll/property inventory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The pinned Blender 5.2 runtime generated a deterministic inventory of all registered `bpy.ops`
operators. Each entry records the operator idname, RNA identifier, factory-startup poll result/error,
and sorted RNA property identifiers/types. This is a machine baseline only; it does not claim that
any operator is supported by the web editor.
## Evidence
- `npm --prefix web run test:blender-operator-inventory` passed after temporary regeneration.
- Checker output: `blender-operator-inventory-ok count=2486 registered=2486 pollUnknown=0 inventory=dabb774ea808f417a0085528ecc4538bc78f71d06f912a881a9453804597e49a next=M15-01C`.
- Poll distribution: 666 true, 1,820 false, 0 unknown.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `21f444610edae75b23a26ef9b94892f07fb056344fbd5e92e232c376454d76cd`
- generator: `5928c2df2074d7b530c173baffc4da2bb0bbb50817ab8b2cdb5f6d43e07b1727`
- checker: `dbf4b64c77750809060e6b3a8eaf87cfd67a904f33949ac631b661153b1f6cde`
- inventory: `dabb774ea808f417a0085528ecc4538bc78f71d06f912a881a9453804597e49a`
- report: `800102c010be59ec519d2e204aec4a97350fe7ba0f6729f52a8788f4a9bcde31`
- manifest: `54dec9d2e7a0eacf3b17a06168b0c9c73a1358d0545cbf70d8a8579a9ed6fde5`
- runtime binary: `d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82`
## Next Task
`M15-01C`: modifier, constraint, Shader Node, Geometry Node and Compositor Node inventory.
## Rollback
Remove the operator generator, checker, inventory, report, manifest, package command and this status
page together. Restore `M15-01A` as the queue tail without changing the data-block inventory.

40
docs/status/M15-01C.md Normal file
View File

@@ -0,0 +1,40 @@
# M15-01C Status
status: done
task: Blender 5.2 modifier, constraint and node inventory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The pinned Blender 5.2 runtime generated deterministic inventories for the 83 modifier types,
29 constraint types, and 451 registered Shader, Geometry, and Compositor node types. Node entries
include RNA properties sorted by identifier. The inventory is a machine baseline only and does not
claim web parity for any family.
## Evidence
- `npm --prefix web run test:blender-family-inventory` passed after temporary regeneration.
- Checker output: `blender-family-inventory-ok modifiers=83 constraints=29 nodes=451 inventory=bb7bbbf64184f326cd17933960800d7d761db6dd3b5f829e322e5ccdb12b8845 next=M15-01D`.
- Node family distribution: Shader 99, Geometry 264, Compositor 88.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `54dec9d2e7a0eacf3b17a06168b0c9c73a1358d0545cbf70d8a8579a9ed6fde5`
- generator: `2630357cbe6ca7264499621399f1a010d6eb7af8c002283d9d16e65c23955eda`
- checker: `0cf9821bb0f6f691ee1eb5a96d77a78932eeb07565352e65a5ed68844f7c0108`
- inventory: `bb7bbbf64184f326cd17933960800d7d761db6dd3b5f829e322e5ccdb12b8845`
- report: `0ca03907f828feba02df396d3fb9f0cfab791a5be67bd8d768c175a49088bae1`
- manifest: `ae6acf4fa173803fcbd9b4c3cff0a561563e7ddb7abf6985844397d14c8f45dc`
- runtime binary: `d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82`
## Next Task
`M15-01D`: sequencer strip/effect, physics family, and import/export inventory.
## Rollback
Remove the family generator, checker, inventory, report, manifest, package command and this status
page together. Restore `M15-01B` as the queue tail without changing the operator inventory.

39
docs/status/M15-01D.md Normal file
View File

@@ -0,0 +1,39 @@
# M15-01D Status
status: done
task: Blender 5.2 sequencer, physics and import/export inventory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The pinned Blender 5.2 runtime generated deterministic inventories for 24 sequencer strip/effect
types, 65 registered physics RNA data types, and 33 import/export operators. Operator entries retain
poll state and sorted RNA properties. This is a machine baseline only; it does not claim web parity
for sequencer, physics, or file formats.
## Evidence
- `npm --prefix web run test:blender-format-inventory` passed after temporary regeneration.
- Checker output: `blender-format-inventory-ok strips=24 physics=65 io=33 inventory=d3892fc6126f2e477db8b7bcb2bc5ac7a77db1049f0165350ccc834d3a151394 next=M15-01E`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `ae6acf4fa173803fcbd9b4c3cff0a561563e7ddb7abf6985844397d14c8f45dc`
- generator: `618ceb016bf7ab4251d1c8575bd091ea96aecdd423c1d69eea1082b13a734804`
- checker: `3c22b24561a77058115e6ae1a58af7f0aaea782fab9416e2ce15221c4b91f8e4`
- inventory: `d3892fc6126f2e477db8b7bcb2bc5ac7a77db1049f0165350ccc834d3a151394`
- report: `e345452bda9fa1c054974a34895027c080cf055ced2f24330189edbf9c0d5a5d`
- manifest: `7e67b065ac9ed8522eac3c4aa185487c6af1892619864f3760bd4efa860ab278`
- runtime binary: `d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82`
## Next Task
`M15-01E`: editor, space, region, workspace and keymap inventory.
## Rollback
Remove the format generator, checker, inventory, report, manifest, package command and this status
page together. Restore `M15-01C` as the queue tail without changing the family inventory.

39
docs/status/M15-01E.md Normal file
View File

@@ -0,0 +1,39 @@
# M15-01E Status
status: done
task: Blender 5.2 editor, space, region, workspace and keymap inventory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The pinned Blender 5.2 runtime generated deterministic editor inventories for 19 Area types, 17
Region types, 19 Space types, 16 concrete Space RNA classes, and 13 Workspace modes. The initialized
factory keyconfig contributes 280 keymaps and 3,228 keymap items, including modal event items with
empty operator ids. This is a machine baseline only and does not claim editor or keymap parity.
## Evidence
- `npm --prefix web run test:blender-editor-inventory` passed after temporary regeneration.
- Checker output: `blender-editor-inventory-ok areas=19 regions=17 keymaps=280 items=3228 inventory=6293b5c5bc23c8a73fdde553a5173ac1da25a08c8158af5ec81f4b0f864a5064 next=M15-01F`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `7e67b065ac9ed8522eac3c4aa185487c6af1892619864f3760bd4efa860ab278`
- generator: `287c04d7d11068fc28c8aac3a70f12dc6a0631a894c88e4e8d28752e54214274`
- checker: `dd4fe1c82ed6f6d9eff9bb1abd017a1066ec7d95f76867d33a4e76112ed7b754`
- inventory: `6293b5c5bc23c8a73fdde553a5173ac1da25a08c8158af5ec81f4b0f864a5064`
- report: `cc88dd114f215100e28cefc9180e56204bd7694217047e5c6db1e79059966235`
- manifest: `c7e5e5d96c1c36072cbba9de6d30a3c99b03ef341fa376152d961896102e341b`
- runtime binary: `d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82`
## Next Task
`M15-01F`: same-level inventory for Main, Scene, Mesh, Depsgraph and existing V1 core slices.
## Rollback
Remove the editor generator, checker, inventory, report, manifest, package command and this status
page together. Restore `M15-01D` as the queue tail without changing the format inventory.

39
docs/status/M15-01F.md Normal file
View File

@@ -0,0 +1,39 @@
# M15-01F Status
status: done
task: Blender 5.2 Main/Scene/Mesh/Depsgraph/core inventory
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The pinned Blender 5.2 runtime generated a same-level RNA inventory of 108 core classes: Main 39,
Scene 16, Mesh 30, Depsgraph 3, and the existing V1 core slice 20. Each class includes sorted RNA
property metadata. This is a machine inventory and explicitly does not map current web coverage to
full Blender parity.
## Evidence
- `npm --prefix web run test:blender-core-inventory` passed after temporary regeneration.
- Checker output: `blender-core-inventory-ok classes=108 main=39 scene=16 mesh=30 depsgraph=3 core=20 inventory=4810abd2f91e580da3f7be70f1583f5cf6b2ecc20a13f0ce09b7484c4393e643 next=M15-02A`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `c7e5e5d96c1c36072cbba9de6d30a3c99b03ef341fa376152d961896102e341b`
- generator: `64e6c3590b084ec8906e26f46cab1596211c197251e0c7a81de2f5edbc6dcd43`
- checker: `ca13efc97cd4709b103268be95f6fe9fa824f64a04f51ab678c78158c44979d7`
- inventory: `4810abd2f91e580da3f7be70f1583f5cf6b2ecc20a13f0ce09b7484c4393e643`
- report: `8752644f8956c747c8da14afcd04f73e0a5823713ba98ee08c21cf240ff1f140`
- manifest: `d49a6196cc5f35907e450b2c547be31962ae759a7db3c473586f9d8254f7878f`
- runtime binary: `d4483926610484ef9c2ad9241aae1469f934d955ebe791f1920e263e0ba85b82`
## Next Task
`M15-02A`: map each inventoried item to owner family, implementation class, tests and evidence.
## Rollback
Remove the core generator, checker, inventory, report, manifest, package command and this status page
together. Restore `M15-01E` as the queue tail without changing the editor inventory.

37
docs/status/M15-02A.md Normal file
View File

@@ -0,0 +1,37 @@
# M15-02A Status
status: done
task: Map inventory entries to owner, implementation class, tests and evidence
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
All 6,900 entries from M15-01A through M15-01F now have unique stable IDs and mappings to one of 20
owner families, an `INVENTORY_BASELINE` implementation class, the source checker, and the source
manifest. Coverage remains `INVENTORIED_ONLY`; the map does not claim functional implementation.
## Evidence
- `npm --prefix web run test:blender-parity-map` passed deterministic regeneration and artifact checks.
- Checker output: `blender-parity-map-ok mapped=6900 families=20 map=f3e757f26e58a4252b6cc2a7f9275428bbe5bf659cc0f0ff6350a147bdf2809c next=M15-02B`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `d49a6196cc5f35907e450b2c547be31962ae759a7db3c473586f9d8254f7878f`
- generator: `2430a0eaa408ebba2fe25a1e873989784f8c50fe6dccc6636a07a76e986eb4ca`
- checker: `b5f33d8535c0d72c53979f3a222b0004a48d265706adf5c1f9cad6907c80d092`
- map: `f3e757f26e58a4252b6cc2a7f9275428bbe5bf659cc0f0ff6350a147bdf2809c`
- report: `650a1c37e459bbaf19f20fa7f2be57bcb2ea8dd6ed472726a9ff399d17109132`
- manifest: `9f9e954bd3f00fbc2b18802ed8c7cfce469de8cd0f6bc23e49fa2a89ecb0dcc4`
## Next Task
`M15-02B`: detect unmapped, duplicate, summary-only, proxy-only and route-only entries.
## Rollback
Remove the map generator, checker, map, report, manifest, package command and this status page.
Restore `M15-01F` as the queue tail without modifying source inventories.

37
docs/status/M15-02B.md Normal file
View File

@@ -0,0 +1,37 @@
# M15-02B Status
status: done
task: Parity map gap classification audit
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
## Scope
The map audit checked all 6,900 M15 inventory mappings for missing owner/implementation/test/evidence
bindings and duplicate IDs. It classified every `INVENTORY_BASELINE` entry as `summaryOnly`, while
unmapped, duplicate, proxy-only and route-only counts remain zero. No parity claim was promoted.
## Evidence
- `npm --prefix web run test:blender-gap-audit` passed deterministic regeneration and artifact checks.
- Checker output: `blender-gap-audit-ok inventoried=6900 gaps=6900 summaryOnly=6900 next=M15-02C`.
- `npm --prefix web run typecheck` and `git diff --check` passed.
## Artifact Hashes
- parent manifest: `9f9e954bd3f00fbc2b18802ed8c7cfce469de8cd0f6bc23e49fa2a89ecb0dcc4`
- generator: `f0f44767cd6e2ce8aab4eed391b7e11fe1ff566cd52b80632c02085af0ec0f35`
- checker: `ebab966ef3edfd5e093d742950352e5f05b7cf04d82ba817812d7afcedccfe98`
- audit: `e976ff40d2f3491a5a57ffcdd0d0c0f0586e57d06984e4a4aa05ba1b36800faa`
- report: `445fe3426a42579334707000e87eaff29bd895d888faf4fab30f1f4bb2666269`
- manifest: `987c780c60cfaa71a728c675ce2c88688b75cb910528c933f84c38fee1360565`
## Next Task
`M15-02C`: fail-closed audit for `LOCAL_EXACT` desktop/WASM same-fixture evidence.
## Rollback
Remove the gap audit generator, checker, audit, report, manifest, package command and this status
page. Restore `M15-02A` as the queue tail without modifying the parity map.

16
docs/status/M15-02C.md Normal file
View File

@@ -0,0 +1,16 @@
# M15-02C Status
status: done
task: LOCAL_EXACT fail-closed evidence audit
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
`npm --prefix web run test:blender-local-exact-audit` passed: applicable 0, blocked 0, notApplicable
6,900. No inventory entry was promoted without desktop/WASM same-fixture evidence.
Artifacts: audit `ab37f60ff9ea4ad99d0f6041de707d92010de81f22a1594dd6dfa4faf6c471cb`, report
`0e5ffaf4fa99e0e58f19fe21ae0d2c7fb465ab487fe84924cda06085a9c6f839`, manifest
`3ecd9906fc18ea695bbf8ffbfb9516a3e4f5b6dae204ca2afcb9a2c47dc6aa2a`.
Next: `M15-02D`.

16
docs/status/M15-02D.md Normal file
View File

@@ -0,0 +1,16 @@
# M15-02D Status
status: done
task: LOCAL_EQUIVALENT fail-closed evidence audit
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
`npm --prefix web run test:blender-local-equivalent-audit` passed: applicable 0, blocked 0, notApplicable
6,900. No Main/save-reopen parity claim exists in the inventory-only map.
Artifacts: audit `6ffe0a7f076720b120a7b6a3f9bed3b5d4afbba583388df6ac7fb94df64998a2`, report
`8864c360bcdb7c0a191e17ee209a42d762ab980c643e9fecc409d34453c05a9e`, manifest
`f9c2a530dc86563d3c5da71dd28ec6a8009a3549112226ee2cc68d8f49e3c8d0`.
Next: `M15-02E`.

16
docs/status/M15-02E.md Normal file
View File

@@ -0,0 +1,16 @@
# M15-02E Status
status: done
task: SERVER_EXACT fail-closed evidence audit
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
`npm --prefix web run test:blender-server-exact-audit` passed: applicable 0, blocked 0, notApplicable
6,900. No server job/cancel/isolation/result-binding claim exists in the inventory-only map.
Artifacts: audit `2e77b526a90638160ba176bddb84d1028195a588f465475b3a5616854d90368e`, report
`0f641bdf72ad4c97882b0ece84384702f9b83fc23c5b7aca8b555d5fd5206c6c`, manifest
`95110d84f47865412d6d42f618c4bb2f05240bd456109bf72953cc0a888e1382`.
Next: `M15-02F`.

16
docs/status/M15-02F.md Normal file
View File

@@ -0,0 +1,16 @@
# M15-02F Status
status: done
task: Unknown-data preservation fail-closed audit
updated: 2026-08-19 America/New_York
enablingTask: false
parityStateChange: false
`npm --prefix web run test:blender-unknown-data-audit` passed: applicable 0, blocked 0, notApplicable
6,900. No unknown-data save/reload preservation claim exists in the inventory-only map.
Artifacts: audit `bec8d2444ceaeae3db9d35ce6621129c90df2f15bf950667be6e85b096a72e4f`, report
`e2733f49fa9bd755164519ca9dd46a99b1f41036b8ae4bdb0552487dcec4ab7a`, manifest
`ec3fa17832e5fe335b11bd6c12e873abfd4b19273d8e110de860f04b55e7a7e6`.
Next: `M15-03A`.

17
docs/status/M15-03A.md Normal file
View File

@@ -0,0 +1,17 @@
# M15-03A Status
status: done
task: One minimal nextTask per gap
updated: 2026-08-19 America/New_York
Generated 6,900 unique tasks from the gap audit. The current plan has ten completed tasks, one active
pointer (`M16-GAP-00011`) and 6,889 pending tasks. Per-wave counts are M16 2,667, M17 29, M18 451,
M19 20, M20 89, M21 3,625, M22 19.
`npm --prefix web run test:blender-next-task-plan` passed; plan SHA-256 is
`7c4bf7e384da489d0989d6634576373d961b28f8f64f7dabc649daef198fb2a5`.
为避免执行者加载 6.8 MiB 的 pretty JSON已生成 `tests/golden/M15-03A/task-index.json`
`task-catalog.jsonl`。索引绑定上述 plan SHA-256catalog 每行只保留任务身份字段;上下文工具按
offset 读取单条记录并由任务卡提供真实命令。索引校验:`node tools/web/check-task-index.mjs`
Next: `M15-03B`.

11
docs/status/M15-03B.md Normal file
View File

@@ -0,0 +1,11 @@
# M15-03B Status
status: done
task: nextTask specification audit
updated: 2026-08-19 America/New_York
All 6,900 tasks contain fixture, desktop command, Web command, comparator and exit criteria; missing
and malformed counts are zero. `npm --prefix web run test:blender-next-task-spec` passed. Report SHA-256:
`1ec2155f7bd4b35811d08dc2d66907f3bb3d2f917f69845cb6d3d3073f6a4417`.
Next: `M15-03C`.

11
docs/status/M15-03C.md Normal file
View File

@@ -0,0 +1,11 @@
# M15-03C Status
status: done
task: nextTask dependency graph
updated: 2026-08-19 America/New_York
The graph has 6,900 nodes, one active task, zero missing dependencies and zero cycles. `npm
--prefix web run test:blender-task-graph` passed. Report SHA-256:
`1d00d33f9780a35110fd200503c4f5b27b7b0b32d076ee8e681465efb70c4c0a`.
Next: `M15-03D`.

11
docs/status/M15-03D.md Normal file
View File

@@ -0,0 +1,11 @@
# M15-03D Status
status: done
task: inventoried/completed/blocked/uninventoried statistics
updated: 2026-08-19 America/New_York
Machine counts are inventoried=6,900, completed=10, blocked=0, uninventoried=0. `npm --prefix web run
test:blender-task-stats` passed. Report SHA-256:
`fbf3e68a8cb40a309d0ca931ab77dc30b8e743ce90e83ab93e8ec2f1013662cf`.
Next: `M15-03E`.

12
docs/status/M15-03E.md Normal file
View File

@@ -0,0 +1,12 @@
# M15-03E Status
status: blocked
task: owner family zero-gap closure gate
updated: 2026-08-19 America/New_York
The fail-closed closure gate reports `BLOCKED`: 20 owner families still have 6,890 remaining tasks.
It preserves the single active pointer `M16-GAP-00011` and does not infer completion from release or
inventory evidence. `npm --prefix web run test:blender-zero-gap-gate` passed the blocked-state contract.
Report SHA-256: `381ea77d9b884b1bdab58bb60df001a26287db80dd9380edb6ae4d64a0a3d969`.
Next active task: `M16-GAP-00011`.

View File

@@ -0,0 +1,16 @@
# M16-GAP-00001 Status
status: done
task: Action data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
enablingTask: true
parityStateChange: true
The generated Action fixture was read by Blender 5.2 desktop and the full-Main WASM. Both observed
`action:AnimatedObjectAction:object:AnimatedObject` with three location channels and two keyframes per
channel. Desktop and WASM save/reopen checks were exact; the active pointer advanced to `M16-GAP-00002`.
Evidence: `npm --prefix web run test:generated-gap -- --task M16-GAP-00001` passed with
`desktop=exact saveReopen=exact`.
Next task: `M16-GAP-00002` (Armature data-block).

View File

@@ -0,0 +1,16 @@
# M16-GAP-00002 Status
status: done
task: Armature data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
enablingTask: true
parityStateChange: true
The generated Armature fixture was read by Blender 5.2 desktop and full-Main WASM. Both observed
`armature:RiggedArmature` with Root and Tip bones, Tip parented to Root, and mesh skin-weight linkage.
Desktop and WASM save/reopen checks were exact. The active pointer advanced to `M16-GAP-00003`.
Evidence: `npm --prefix web run test:generated-gap -- --task M16-GAP-00002` passed with
`bones=2 desktop=exact saveReopen=exact`.
Next task: `M16-GAP-00003` (Brush data-block).

View File

@@ -0,0 +1,16 @@
# M16-GAP-00003 Status
status: done
task: Brush data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
enablingTask: true
parityStateChange: true
Added bounded `BrushIR` fields to the native Main reader and optional SceneIR parser field. A real
Blender 5.2 Brush fixture reports `WebGapBrush` size 42, alpha 0.65, hardness 0.8, spacing 17 and
jitter 0.2. Full-Main WASM and desktop match exactly, including save/reopen.
Evidence: `npm --prefix web run test:generated-gap -- --task M16-GAP-00003` passed with
`brush=brush:WebGapBrush size=42 desktop=exact saveReopen=exact`.
Next task: `M16-GAP-00004` (Camera data-block).

View File

@@ -0,0 +1,10 @@
# M16-GAP-00004 Status
status: done
task: Camera data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
Blender desktop and full-Main WASM read the same `camera:WebGapCamera` fixture with perspective
projection, 52 mm lens, 0.1 near plane and 2500 far plane. Save/reopen was exact on both paths.
Next task: `M16-GAP-00005` (Collection data-block).

View File

@@ -0,0 +1,8 @@
# M16-GAP-00005 Status
status: done
task: Collection data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
Desktop and WASM read nested `WebGapCollection` -> `WebGapChild` hierarchy with the collection object
link intact. Save/reopen matched exactly. Next task: `M16-GAP-00006` (Curve data-block).

View File

@@ -0,0 +1,10 @@
# M16-GAP-00006 Status
status: done
task: Curve data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
Desktop and full-Main WASM read the same Bezier Curve fixture: one spline, three points, available
geometry and exact spline offsets. Save/reopen matched the complete non-mesh data record.
Next task: `M16-GAP-00007` (Curves data-block).

View File

@@ -0,0 +1,10 @@
# M16-GAP-00007 Status
status: done
task: Curves data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
Desktop and full-Main WASM read the converted Curves data-block with available geometry, four points
and at least one spline. Save/reopen matched the complete nonMeshData record.
Next task: `M16-GAP-00008` (FreestyleLineStyle data-block).

View File

@@ -0,0 +1,11 @@
# M16-GAP-00008 Status
status: done
task: FreestyleLineStyle data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
Added bounded optional `lineStyles` SceneIR data with name, color, alpha, thickness, chaining/caps,
dashed state and modifier counts. Desktop and full-Main WASM matched the real style fixture and save/
reopen was exact. This does not claim Freestyle stroke rendering parity.
Next task: `M16-GAP-00009` (GreasePencil data-block).

View File

@@ -0,0 +1,10 @@
# M16-GAP-00009 Status
status: done
task: GreasePencil data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
Reused the existing real Grease Pencil Main fixture. Blender desktop and full-Main WASM both observed
GreasePencilData layers/frames, and save/reopen matched exactly.
Next task: `M16-GAP-00010` (Lattice data-block).

View File

@@ -0,0 +1,23 @@
# M16-GAP-00010 Status
status: done
task: Lattice data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Lattice data-block dimensions, interpolation, outside flag, vertex group, point deformation, weight and selection.
evidence:
- Desktop fixture generated by `tools/web/generated/M16-GAP-00010.py`; Blender 5.2 opened, saved to a fresh file, reopened in a new process and matched exactly.
- WASM/Main opened the same fixture, produced 3x2x2 / 12-point `lattice:WebGapLattice`, and matched the desktop point report exactly.
- WASM save/reopen snapshot matched the pre-save snapshot exactly.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00010` exited 0.
- `cmake --build build_web_blender6 --target web_engine -- -j2` exited 0 after `source tools/web/emscripten-env.sh`; generated runtime assets were installed and hash-bound.
artifacts: `tests/golden/M16-GAP-00010/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop checker, Web checker, reader, protocol, WASM/JS runtime and both reports.
knownRisk: This closes one `datablock:Lattice` slice only. Lattice edit operators, lattice modifier evaluation, shape keys, vertex-group weights and all other 6,890 generated gaps remain separate tasks and are not implied complete.
rollback: remove this task's fixture, checker, reports, manifest and runtime/protocol changes; restore parent `M16-GAP-00009` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00011`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00011 Status
status: done
task: Library data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Library metadata for one linked, project-relative source: stable id/name/path, packed state, external-required status, dependency list and read-only contract.
evidence:
- `tools/web/generated/M16-GAP-00011.py` generated a real linked-Library fixture from `WebGapLibrary.blend`; the target reopens in Blender desktop.
- Desktop report matched one `library:WebGapLibrary.blend` with `sourcePath=//WebGapLibrary.blend`, unpacked external-required state, empty dependencies and read-only=true after save/reopen.
- WASM/Main opened the same target fixture and matched the desktop identity and path. WASM save/reopen matched the complete `libraries` snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00011.py -- tests/files/web/generated/M16-GAP-00011-datablock-Library.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00011` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00011` exited 0.
artifacts: `tests/golden/M16-GAP-00011/manifest.json` contains SHA-256 for the parent manifest, target fixture, source library, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Library` metadata slice only. Library link/append/override operations, archive management, packing/unpacking and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, source library, checker, reports, manifest, status and context; restore `M16-GAP-00010` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00012`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00012 Status
status: done
task: Light data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Area Light metadata: type, color, energy, exposure, temperature, temperature enablement, shadow flag, radius, area shape/size/spread and bounded default spot/sun fields.
evidence:
- `tools/web/generated/M16-GAP-00012.py` generated a single `WebGapLight` Area Light fixture with deterministic RNA values.
- Desktop report reopened the fixture after save and matched exactly, including Light type 4, rectangle shape 1, color `[0.25, 0.5, 0.75]`, energy 400, exposure 1, temperature 5000, area size 3x2 and spread 2.4.
- WASM/Main opened the same fixture and matched the desktop report within the bounded float tolerance. WASM save/reopen matched the full Light snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00012.py -- tests/files/web/generated/M16-GAP-00012-datablock-Light.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00012` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00012` exited 0.
artifacts: `tests/golden/M16-GAP-00012/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Light` metadata slice only. Light editing commands, rendering behavior, linked/override lights and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00011` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00013`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00013 Status
status: done
task: Material data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Principled Material metadata and minimal shader graph: PBR values, IOR/transmission/coat, emission, alpha, two-node topology, one link and graph hash.
evidence:
- `tools/web/generated/M16-GAP-00013.py` generated a retained `WebGapMaterial` on a minimal triangle Mesh, with Principled and Material Output nodes.
- Desktop report reopened after save and matched exactly: base color `[0.2, 0.4, 0.8, 0.9]`, roughness 0.6, metallic 0.35, IOR 1.6, transmission 0.27, coat 0.64/0.12, emission `[0.05, 0.1, 0.2, 1]` at strength 3.5, two nodes and one link.
- WASM/Main opened the same fixture, matched all bounded material fields and shader graph topology, and produced a stable 64-character graph hash. WASM save/reopen matched the full material snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00013.py -- tests/files/web/generated/M16-GAP-00013-datablock-Material.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00013` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00013` exited 0.
artifacts: `tests/golden/M16-GAP-00013/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Material` reader slice only. Material authoring commands, texture evaluation, unsupported node behavior and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00012` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00014`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00014 Status
status: done
task: Mesh data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Mesh geometry metadata for one quad: counts, triangulated indices, positions, UV layer identity and UV values.
evidence:
- `tools/web/generated/M16-GAP-00014.py` generated a retained `WebGapMesh` quad with four vertices, one face and one `WebGapUV` layer.
- Desktop report reopened after save and matched exactly: 4 vertices, 4 edges, 1 face, 4 corners, 2 triangles, deterministic positions/indices and UV values.
- WASM/Main opened the same fixture with `geometryStatus=available`, matched counts, positions, indices and UV layer, and save/reopen matched the complete mesh snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00014.py -- tests/files/web/generated/M16-GAP-00014-datablock-Mesh.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00014` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00014` exited 0.
artifacts: `tests/golden/M16-GAP-00014/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Mesh` geometry-reader slice only. Mesh edit operators, modifiers, shape keys, skinning, paint attributes and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00013` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00015`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00015 Status
status: done
task: MetaBall data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 MetaBall element metadata: point count, element positions, radii and anisotropic scale values.
evidence:
- `tools/web/generated/M16-GAP-00015.py` generated one `WebGapMetaBall` data-block with two deterministic elements and a linked object.
- Desktop report reopened after save and matched exactly: two elements at `[-0.65, 0, 0.4]` and `[0.65, 0, 0.4]`, radii 0.75/0.55 and scales 1.1/0.9/1.2 and 0.8/1.05/0.95.
- WASM/Main opened the same fixture with `geometryStatus=available`, matched both elements and pointCount, and save/reopen matched the full non-mesh snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00015.py -- tests/files/web/generated/M16-GAP-00015-datablock-MetaBall.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00015` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00015` exited 0.
artifacts: `tests/golden/M16-GAP-00015/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:MetaBall` metadata slice only. MetaBall editing/evaluation commands and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00014` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00016`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00016 Status
status: done
task: NodeTree data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 shader NodeTree observability through a retained Material: RGB -> Principled -> Material Output nodes, links and the reader's stable shader graph hash.
evidence:
- `tools/web/generated/M16-GAP-00016.py` generated `WebGapNodeTreeMaterial` with three nodes and two links, retained by a minimal triangle object.
- Desktop report reopened after save and matched exactly: ShaderNodeRGB, ShaderNodeBsdfPrincipled and ShaderNodeOutputMaterial with two deterministic links.
- WASM/Main opened the same fixture, exposed the graph through the material shader graph with three nodes, two links and a 64-character hash, and save/reopen matched the material graph exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00016.py -- tests/files/web/generated/M16-GAP-00016-datablock-NodeTree.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00016` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00016` exited 0.
artifacts: `tests/golden/M16-GAP-00016/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes the shader NodeTree reader slice exposed by Material. Geometry-node groups, compositor trees, node editing and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00015` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00017`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00017 Status
status: done
task: Object data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Empty Object metadata: type, visibility/selectability, translation, Euler rotation, scale and parent relation.
evidence:
- `tools/web/generated/M16-GAP-00017.py` generated a data-free `WebGapObject` Empty with deterministic transform values.
- Desktop report reopened after save and matched exactly: EMPTY, visible/selectable, translation `[1.25, -2.5, 3.75]`, rotation `[0.2, -0.35, 0.5]`, scale `[1.5, 0.75, 2]`, no parent.
- WASM/Main opened the same fixture and matched the Object node fields; save/reopen matched the complete node snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00017.py -- tests/files/web/generated/M16-GAP-00017-datablock-Object.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00017` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00017` exited 0.
artifacts: `tests/golden/M16-GAP-00017/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Object` metadata slice only. Object operators, parenting workflows, constraints, modifiers and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, checker, reports, manifest, status and context; restore `M16-GAP-00016` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00018`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00018 Status
status: done
task: ParticleSettings data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 ParticleSettings identity and bounded emission fields: type, source, distribution, physics, count, frame range, lifetime, particle size and draw size.
evidence:
- `tools/web/generated/M16-GAP-00018.py` generated a minimal retained `WebGapParticleSettings` data-block without a particle-system modifier, avoiding unrelated modifier state while preserving the exact RNA data.
- Desktop report reopened after save and matched exactly: emitter type, face source, JIT distribution, Newton physics, 128 particles, frames 4-96, lifetime 32, size 0.125 and draw size 0.25.
- The Blend reader now exports `ParticleSettings` blocks into SceneIR; WASM/Main opened the same fixture and matched every bounded field. Save/reopen matched the full ParticleSettings snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00018.py -- tests/files/web/generated/M16-GAP-00018-datablock-ParticleSettings.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00018` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00018` exited 0.
artifacts: `tests/golden/M16-GAP-00018/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/API/protocol/runtime and both reports.
knownRisk: This closes one `datablock:ParticleSettings` observability slice only. Particle-system modifiers, particle simulation, operators and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, generator, checker branch, reports, manifest, status and context; restore `M16-GAP-00017` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00019`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00019 Status
status: done
task: PointCloud data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 PointCloud geometry with four deterministic points, position attributes and radii.
evidence:
- `tools/web/generated/M16-GAP-00019.py` generated a retained `WebGapPointCloud` through Blender's point-cloud conversion path with four deterministic points and radius values `[0.25, 0.5, 0.75, 1.0]`.
- Desktop report reopened after save and matched exactly: four points and all control-point/radius values.
- Existing PointCloud reader support exposed the same fixture in WASM/Main with `geometryStatus=available`; positions and radii matched desktop and save/reopen matched the full non-mesh snapshot exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00019.py -- tests/files/web/generated/M16-GAP-00019-datablock-PointCloud.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00019` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00019` exited 0.
artifacts: `tests/golden/M16-GAP-00019/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:PointCloud` geometry-reader slice only. PointCloud editing operators, attribute mutation and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, generator, checker branch, reports, manifest, status and context; restore `M16-GAP-00018` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00020`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00020 Status
status: done
task: Scene data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 Scene identity and bounded timeline/render/unit metadata: current/start/end frames, FPS, render engine and unit scale.
evidence:
- `tools/web/generated/M16-GAP-00020.py` generated `WebGapScene` with frame 48 in range 12-180, 30 FPS, Eevee render and metric unit scale 0.25.
- Desktop report reopened after save and matched exactly for scene identity, timeline, render engine and unit metadata.
- WASM/Main opened the same fixture, matched the Scene record and global frame/coordinate metadata, and save/reopen matched the complete scene and frame snapshots exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00020.py -- tests/files/web/generated/M16-GAP-00020-datablock-Scene.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00020` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00020` exited 0.
artifacts: `tests/golden/M16-GAP-00020/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Scene` metadata slice only. Scene sequencing, compositor, render execution and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, generator, checker branch, reports, manifest, status and context; restore `M16-GAP-00019` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00021`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00021 Status
status: done
task: Screen data-block LOCAL_EXACT slice
updated: 2026-08-19 America/New_York
scope: Blender 5.2 `bScreen` identity and bounded editor layout observability through the linked editor workflow: four areas, editor types and regions.
evidence:
- `tools/web/generated/M16-GAP-00021.py` renamed the factory startup screen to `WebGapScreen`, preserving its deterministic four-area layout.
- Desktop report reopened after save and matched exactly: `screen:WebGapScreen`, four areas, `VIEW_3D`, `OUTLINER`, `PROPERTIES`, `DOPESHEET_EDITOR`, and 18 regions.
- WASM/Main opened the same fixture with editor workflow available, matched the corresponding workspace area/editor set and save/reopen matched the complete workflow exactly.
- A truncated malformed Blend submitted to an already loaded Main was rejected and the original snapshot remained unchanged.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00021.py -- tests/files/web/generated/M16-GAP-00021-datablock-Screen.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00021` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00021` exited 0.
artifacts: `tests/golden/M16-GAP-00021/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes one `datablock:Screen` layout-observability slice only. Editor operations, workspace mutation and all other generated gaps remain separate tasks.
rollback: remove this task's fixture, generator, checker branch, reports, manifest, status and context; restore `M16-GAP-00020` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00022`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00022 Status
status: done
task: Sound data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Blender 5.2 `bSound` identity and bounded sound resource fields through the same generated fixture in desktop and WASM/Main: source path, packing state, volume, pitch, channel count and sample rate.
evidence:
- `tools/web/generated/M16-GAP-00022.py` deterministically creates `sound:WebGapSound` from the repository WAV fixture and saves the Blend fixture.
- Desktop reopen report matches exactly: `sound:WebGapSound`, `//WebGapSound.wav`, unpacked, volume/pitch `0.0`, one audio channel and `8000` Hz.
- The reader matches Blender's DNA `bSound` type and emits the same `sounds` resource in Scene IR; protocol validation bounds the resource fields.
- WASM/Main opened the same fixture, matched every desktop sound field, saved and reopened with an identical snapshot, and rejected a truncated Blend without mutating the loaded Main.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00022.py -- tests/files/web/generated/M16-GAP-00022-datablock-Sound.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00022` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00022` exited 0.
artifacts: `tests/golden/M16-GAP-00022/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes only the `datablock:Sound` resource-observability slice. Audio playback, sequencer editing and other data-blocks remain separate tasks.
rollback: remove this task's fixture, generator, desktop checker, checker branch, reader/protocol/runtime changes, reports, manifest, status and context; restore `M16-GAP-00021` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00023`

View File

@@ -0,0 +1,25 @@
# M16-GAP-00023 Status
status: done
task: Speaker data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Blender 5.2 `Speaker` identity and bounded speaker resource fields through the same generated fixture in desktop and WASM/Main: linked sound identity, volume limits, distance controls, attenuation, cone controls, volume and pitch.
evidence:
- `tools/web/generated/M16-GAP-00023.py` deterministically creates `speaker:WebGapSpeaker` linked to `sound:WebGapSpeakerSound` and saves the Blend fixture.
- Desktop reopen report matches exactly for the speaker identity, linked sound and all bounded fields.
- The reader exports Blender's `Speaker` structure as a `speakers` Scene IR resource, including the linked sound ID; protocol validation bounds the resource fields.
- WASM/Main opened the same fixture, matched every desktop speaker field, saved and reopened with an identical snapshot, and rejected a truncated Blend without mutating the loaded Main.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00023.py -- tests/files/web/generated/M16-GAP-00023-datablock-Speaker.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00023` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00023` exited 0.
artifacts: `tests/golden/M16-GAP-00023/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes only the `datablock:Speaker` resource-observability slice. Audio playback, speaker operators and other data-blocks remain separate tasks.
rollback: remove this task's fixture, generator, desktop checker, checker branch, reader/protocol/runtime changes, reports, manifest, status and context; restore `M16-GAP-00022` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00024`

View File

@@ -0,0 +1,26 @@
# M16-GAP-00024 Status
status: done
task: Text data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Blender 5.2 `Text` identity and bounded internal text resource fields through the same generated fixture in desktop and WASM/Main: source content, SHA-256, UTF-8 byte length, line count, path, internal state, dirty state and module flag.
evidence:
- `tools/web/generated/M16-GAP-00024.py` deterministically creates `text:WebGapText` with two text lines and project-relative filepath.
- Desktop reopen report matches exactly: source hash `668dbf...15f82`, 39 UTF-8 bytes, three stored lines, `//WebGapText.txt`, and stable flags.
- The reader exports the bounded Text resource while preserving the existing blocked script-source inventory; protocol validation enforces source/hash/size/line budgets.
- WASM/Main opened the same fixture, matched every desktop Text field, saved and reopened with an identical snapshot, and rejected a truncated Blend without mutating the loaded Main.
- `build_blender_5.2.0/bin/blender -b --factory-startup --python tools/web/generated/M16-GAP-00024.py -- tests/files/web/generated/M16-GAP-00024-datablock-Text.blend` exited 0.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00024` exited 0.
- `node tools/web/check-generated-gap.mjs --task M16-GAP-00024` exited 0.
- `npm --prefix web run typecheck` exited 0.
artifacts: `tests/golden/M16-GAP-00024/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes only the `datablock:Text` resource-observability slice. Text editing UI, script execution and other data-blocks remain separate tasks.
rollback: remove this task's fixture, generator, desktop checker, checker branch, reader/protocol/runtime changes, reports, manifest, status and context; restore `M16-GAP-00023` as the queue tail without editing its successful evidence.
nextTask: `M16-GAP-00025`

View File

@@ -0,0 +1,22 @@
# M16-GAP-00025 Status
status: done
task: Texture data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Blender 5.2 `Tex` identity and bounded procedural texture fields: type, noise scale/depth, intensity, contrast and saturation.
evidence:
- `tools/web/generated/M16-GAP-00025.py` deterministically creates `texture:WebGapTexture` as a CLOUDS texture.
- Desktop reopen report matches exactly; WASM/Main matched all fields, save/reopen was identical, and truncated Blend input was rejected without Main mutation.
- Reader exports `Tex` as `textures`; protocol validation bounds the resource fields.
- Generator, desktop checker, Web checker and Emscripten runtime validation all exited 0.
artifacts: `tests/golden/M16-GAP-00025/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes only the procedural `datablock:Texture` resource slice. Texture node editing and image sampling remain separate tasks.
rollback: remove this task's fixture, generator, checker, reader/protocol/runtime changes, reports, manifest, status and context; restore `M16-GAP-00024` as queue tail.
nextTask: `M16-GAP-00026`

View File

@@ -0,0 +1,22 @@
# M16-GAP-00026 Status
status: done
task: Volume data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Blender 5.2 `Volume` resource observability through bounded non-mesh Scene IR fields: source path, geometry status and volume display/render properties.
evidence:
- `tools/web/generated/M16-GAP-00026.py` deterministically creates `volume:WebGapVolume` with project-relative OpenVDB path, density `2.5`, nearest interpolation and step size `0.125`.
- Desktop and WASM reports match exactly; save/reopen is stable and malformed Blend input leaves Main unchanged.
- Existing Volume non-mesh reader path provides the bounded resource fields; no broader volume grid or rendering behavior was added.
- Generator, desktop checker and Web checker exited 0.
artifacts: `tests/golden/M16-GAP-00026/manifest.json` contains SHA-256 for the parent manifest, fixture, generator, desktop/Web checkers, reader/protocol/runtime and both reports.
knownRisk: This closes only bounded `datablock:Volume` metadata. OpenVDB loading, grids and volume rendering remain separate tasks.
rollback: remove this task's fixture, generator, checker, reports, manifest, status and context; restore `M16-GAP-00025` as queue tail.
nextTask: `M16-GAP-00027`

View File

@@ -0,0 +1,17 @@
# M16-GAP-00027 Status
status: done
task: WindowManager data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Headless `WindowManager` identity and bounded runtime state: manager identity/name, preset name, window count and interface lock state.
evidence:
- Desktop fixture and reopen report are exact: `window-manager:WinMan`, preset `New Preset`, one window, interface unlocked.
- WASM/Main exposes the same bounded `windowManager` resource, save/reopen is exact, and malformed Blend input leaves Main unchanged.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00027` exited 0.
knownRisk: WindowManager operators, reports, keymaps and live window mutation remain outside this bounded headless slice.
nextTask: `M16-GAP-00028`

View File

@@ -0,0 +1,17 @@
# M16-GAP-00028 Status
status: done
task: WorkSpace data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: Workspace identity and bounded screen linkage count for `workspace:WebGapWorkspace`.
evidence:
- Desktop fixture renamed the Layout workspace to `WebGapWorkspace`; reopen is exact.
- WASM/Main exposes the same workspace resource and screen count, save/reopen is exact, and malformed Blend input leaves Main unchanged.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00028` exited 0.
knownRisk: Full workspace editor mutation remains covered by the Screen/editor workflow slice; this task only closes Workspace identity and linkage count.
nextTask: `M16-GAP-00029`

View File

@@ -0,0 +1,17 @@
# M16-GAP-00029 Status
status: done
task: World data-block LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: World identity, background color and bounded mist settings for `world:WebGapWorld`.
evidence:
- Desktop fixture exposes `WebGapWorld` with the configured color and mist fields; save/reopen is exact.
- WASM/Main exposes the same world resource from the same fixture, save/reopen is exact, and malformed Blend input leaves Main unchanged.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00029` and `node tools/web/check-generated-gap.mjs --task M16-GAP-00029` exited 0.
knownRisk: Full world shader/editor mutation remains outside this bounded data-block identity slice.
nextTask: `M16-GAP-00030`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00030 Status
status: done
task: ARMATURE modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: ARMATURE modifier identity, target object, vertex group, deform flags, visibility modes and dependency linkage for `mesh:WebGapArmatureMesh`.
evidence:
- Desktop fixture exposes one ARMATURE modifier targeting `object:WebGapArmatureObject`; save/reopen is exact.
- WASM/Main exposes the same modifier stack from the same fixture, including `armatureObjectId`, `vertexGroup`, `deformFlags`, and dependency; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00030` and `node tools/web/check-generated-gap.mjs --task M16-GAP-00030` exited 0.
knownRisk: Full ARMATURE deformation evaluation and editor mutation remain outside this metadata/local-exact modifier slice.
nextTask: `M16-GAP-00031`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00031 Status
status: done
task: ARRAY modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: ARRAY modifier identity, fixed duplicate count, start/end cap targets and visibility modes for `mesh:WebGapArrayObjectMesh`.
evidence:
- Desktop fixture exposes `WebGapArray` with count 4 and stable start/end cap targets; save/reopen is exact.
- WASM/Main exposes the same modifier parameters and dependency targets from the same fixture; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00031` and `node tools/web/check-generated-gap.mjs --task M16-GAP-00031` exited 0.
knownRisk: Full evaluated Array geometry and editor mutation remain outside this metadata/local-exact modifier slice.
nextTask: `M16-GAP-00032`

View File

@@ -0,0 +1,18 @@
# M16-GAP-00032 Status
status: done
task: BEVEL modifier LOCAL_EXACT slice
updated: 2026-08-20 America/New_York
scope: BEVEL modifier identity, width, segments, profile and visibility modes for `mesh:WebGapBevelMesh`.
evidence:
- Desktop fixture exposes `WebGapBevel` with width 0.2, three segments and profile 0.35; save/reopen is exact.
- WASM/Main exposes the same modifier parameters from the same fixture; save/reopen is exact.
- Malformed Blend input is rejected without mutating Main.
- `npm --prefix web run test:generated-gap -- --task M16-GAP-00032` and `node tools/web/check-generated-gap.mjs --task M16-GAP-00032` exited 0.
knownRisk: Full evaluated Bevel geometry and editor mutation remain outside this metadata/local-exact modifier slice.
nextTask: `M16-GAP-00033`

Some files were not shown because too many files have changed in this diff Show More