render: extract native M2 animation resource observer

This commit is contained in:
2026-07-18 10:55:47 +04:00
parent d22a9cd743
commit 1cb0101a73
18 changed files with 932 additions and 104 deletions
+19 -5
View File
@@ -60,7 +60,8 @@ Runtime и Editor используют facade; planner/scheduler тестиру
`M03-RND-M2-BUILD-DISPATCH-PLANNER-001`,
`M03-RND-M2-BUILD-RESOURCE-SNAPSHOT-001`,
`M03-RND-M2-STATIC-BUILD-RESOURCE-OBSERVER-001`,
`M03-RND-M2-CACHED-ANIMATION-RESOURCE-OBSERVER-001`
`M03-RND-M2-CACHED-ANIMATION-RESOURCE-OBSERVER-001`,
`M03-RND-M2-NATIVE-ANIMATION-RESOURCE-OBSERVER-001`
- Commands: dedicated scheduler/planner/facade/focus/coordinate/manifest/shutdown
headless verifiers; Godot cold editor parse; coordination, documentation and diff gates.
- Results: scheduler `cases=6 iterations=20000 elapsed_ms=10.216`; planner
@@ -294,6 +295,12 @@ Runtime и Editor используют facade; planner/scheduler тестиру
Merge `f79e064` passed post-merge observer (`61.514ms`), animation pipeline,
snapshot, dispatch, prototype cache, shutdown, facade, internal-access `30`,
manifest `7/7`, documentation `43`, coordination and checkpoint dry-run `7/7`.
M2 native animation resource observer passed `cases=33 iterations=20000
elapsed_ms=16.881` with exact candidate, dependency, cached/static, raw/surface/build
failure, preserved childless lifetime, adoption, dependency and source cases.
All 57 autonomous headless regressions passed; internal-access remained `30`,
documentation covered `44` module specifications, coordination retained `34`
historical expired-claim warnings and checkpoint dry-run kept all `7/7` plans.
M02 terrain-query regression
remained green (13 pre-existing expired M00 claim warnings).
- Fidelity comparison: all 16 historical operation limits and drain sites were
@@ -331,11 +338,14 @@ Runtime и Editor используют facade; planner/scheduler тестиру
One build operation now carries the exact normalized path, optional animated
prototype, pending-animation state, optional static Mesh and missing outcome in
a typed snapshot; releasing it never frees either borrowed engine resource.
Cached animated lookup now preserves cached/static/pending priority, empty-
Native GryphonRoost observation now preserves case-insensitive substring
selection, cached/static priority, synchronous animated raw read, non-empty
surface and child requirements, first-wins adoption and exact success-log fields.
Cached animated lookup preserves cached/static/pending priority, empty-
allowlist rejection, denylist precedence, normalized/lowercase/basename path
order, animation presence, primitive cap, accepted empty/`pivot_prefix_v1`
schema rules and request/static-only transitions. Native GryphonRoost remains
first and loader-owned, so selection and visible behavior are unchanged.
first through its observer, so selection and visible behavior are unchanged.
WMO cache-key normalization, positive MODF identity with tile/index fallback
and world position/Euler/unclamped-scale transforms are unchanged across
lightweight render, cached-scene and live-prototype paths.
@@ -456,6 +466,8 @@ Runtime и Editor используют facade; planner/scheduler тестиру
static M2 build resource observer and loader/cache/pipeline/snapshot adapters,
cached M2 animation resource observer and loader/prototype/pipeline/snapshot
adapters plus generated GLB metadata regression fixtures,
native M2 animation resource observer and loader/raw-repository/prototype-cache
adapters plus synthetic lifecycle and exact-dependency regression fixtures,
expanded facade/internal-access/coordinate verifiers; work-package claims and this evidence.
- Remaining risks: worker concurrency and stale-result validation remain
streamer-owned; cancellation stops new permits but does not interrupt
@@ -478,12 +490,14 @@ Runtime и Editor используют facade; planner/scheduler тестиру
raw
animated-instance materialization is now separated but remains synchronous
main-thread work; asset-backed traversal/visual/leak/p95/p99 evidence is pending;
native parsing/build also remains synchronous and the historically unfreed
childless builder result remains a documented leak edge;
static MultiMesh materialization is also separated but remains synchronous;
headless timing does not measure transform upload GPU cost and spatial-cell
batching still needs culling/performance evidence; typed M2 pending state is
separated and dispatch decisions are explicit; static and cached-animation
observers produce typed per-operation state, while native observation, action
execution and root cleanup remain in loader; both ResourceLoader finalize
observers produce typed per-operation state, including native observation;
action execution and root cleanup remain in loader; both ResourceLoader finalize
drains remain loader-owned;
WMO ResourceLoader/FileAccess I/O, live fallback and group materialization
remain in the loader;