Govern task context and advance execution pointer
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
43
docs/status/M14-04F.md
Normal 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
43
docs/status/M14-04G.md
Normal 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
40
docs/status/M14-04H.md
Normal 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
38
docs/status/M15-01A.md
Normal 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
40
docs/status/M15-01B.md
Normal 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
40
docs/status/M15-01C.md
Normal 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
39
docs/status/M15-01D.md
Normal 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
39
docs/status/M15-01E.md
Normal 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
39
docs/status/M15-01F.md
Normal 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
37
docs/status/M15-02A.md
Normal 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
37
docs/status/M15-02B.md
Normal 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
16
docs/status/M15-02C.md
Normal 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
16
docs/status/M15-02D.md
Normal 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
16
docs/status/M15-02E.md
Normal 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
16
docs/status/M15-02F.md
Normal 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
17
docs/status/M15-03A.md
Normal 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-256,catalog 每行只保留任务身份字段;上下文工具按
|
||||
offset 读取单条记录并由任务卡提供真实命令。索引校验:`node tools/web/check-task-index.mjs`。
|
||||
|
||||
Next: `M15-03B`.
|
||||
11
docs/status/M15-03B.md
Normal file
11
docs/status/M15-03B.md
Normal 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
11
docs/status/M15-03C.md
Normal 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
11
docs/status/M15-03D.md
Normal 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
12
docs/status/M15-03E.md
Normal 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`.
|
||||
16
docs/status/M16-GAP-00001.md
Normal file
16
docs/status/M16-GAP-00001.md
Normal 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).
|
||||
16
docs/status/M16-GAP-00002.md
Normal file
16
docs/status/M16-GAP-00002.md
Normal 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).
|
||||
16
docs/status/M16-GAP-00003.md
Normal file
16
docs/status/M16-GAP-00003.md
Normal 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).
|
||||
10
docs/status/M16-GAP-00004.md
Normal file
10
docs/status/M16-GAP-00004.md
Normal 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).
|
||||
8
docs/status/M16-GAP-00005.md
Normal file
8
docs/status/M16-GAP-00005.md
Normal 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).
|
||||
10
docs/status/M16-GAP-00006.md
Normal file
10
docs/status/M16-GAP-00006.md
Normal 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).
|
||||
10
docs/status/M16-GAP-00007.md
Normal file
10
docs/status/M16-GAP-00007.md
Normal 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).
|
||||
11
docs/status/M16-GAP-00008.md
Normal file
11
docs/status/M16-GAP-00008.md
Normal 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).
|
||||
10
docs/status/M16-GAP-00009.md
Normal file
10
docs/status/M16-GAP-00009.md
Normal 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).
|
||||
23
docs/status/M16-GAP-00010.md
Normal file
23
docs/status/M16-GAP-00010.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00011.md
Normal file
25
docs/status/M16-GAP-00011.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00012.md
Normal file
25
docs/status/M16-GAP-00012.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00013.md
Normal file
25
docs/status/M16-GAP-00013.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00014.md
Normal file
25
docs/status/M16-GAP-00014.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00015.md
Normal file
25
docs/status/M16-GAP-00015.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00016.md
Normal file
25
docs/status/M16-GAP-00016.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00017.md
Normal file
25
docs/status/M16-GAP-00017.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00018.md
Normal file
25
docs/status/M16-GAP-00018.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00019.md
Normal file
25
docs/status/M16-GAP-00019.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00020.md
Normal file
25
docs/status/M16-GAP-00020.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00021.md
Normal file
25
docs/status/M16-GAP-00021.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00022.md
Normal file
25
docs/status/M16-GAP-00022.md
Normal 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`
|
||||
25
docs/status/M16-GAP-00023.md
Normal file
25
docs/status/M16-GAP-00023.md
Normal 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`
|
||||
26
docs/status/M16-GAP-00024.md
Normal file
26
docs/status/M16-GAP-00024.md
Normal 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`
|
||||
22
docs/status/M16-GAP-00025.md
Normal file
22
docs/status/M16-GAP-00025.md
Normal 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`
|
||||
22
docs/status/M16-GAP-00026.md
Normal file
22
docs/status/M16-GAP-00026.md
Normal 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`
|
||||
17
docs/status/M16-GAP-00027.md
Normal file
17
docs/status/M16-GAP-00027.md
Normal 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`
|
||||
17
docs/status/M16-GAP-00028.md
Normal file
17
docs/status/M16-GAP-00028.md
Normal 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`
|
||||
17
docs/status/M16-GAP-00029.md
Normal file
17
docs/status/M16-GAP-00029.md
Normal 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`
|
||||
18
docs/status/M16-GAP-00030.md
Normal file
18
docs/status/M16-GAP-00030.md
Normal 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`
|
||||
18
docs/status/M16-GAP-00031.md
Normal file
18
docs/status/M16-GAP-00031.md
Normal 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`
|
||||
18
docs/status/M16-GAP-00032.md
Normal file
18
docs/status/M16-GAP-00032.md
Normal 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
Reference in New Issue
Block a user