render: extract WMO scene resource finalizer

This commit is contained in:
2026-07-18 14:16:49 +04:00
parent 9ba7ca3263
commit 7779e9e75f
12 changed files with 766 additions and 60 deletions
+17 -7
View File
@@ -43,6 +43,7 @@ Runtime и Editor используют facade; planner/scheduler тестиру
`M03-RND-WMO-RENDER-RESOURCE-CACHE-001`,
`M03-RND-WMO-RENDER-RESOURCE-FINALIZER-001`,
`M03-RND-WMO-SCENE-RESOURCE-CACHE-001`,
`M03-RND-WMO-SCENE-RESOURCE-FINALIZER-001`,
`M03-RND-ADT-WATER-LOAD-PIPELINE-001`,
`M03-RND-ADT-WATER-SCENE-FINALIZER-001`,
`M03-RND-M2-RUNTIME-REBUILD-CLASSIFIER-001`,
@@ -142,6 +143,13 @@ Runtime и Editor используют facade; planner/scheduler тестиру
Post-merge scene state (`40.113ms`), render state (`43.434ms`), shutdown,
WMO queue/resolver, facade, internal-access `40`, `7/7` manifest,
documentation and coordination gates remained green.
WMO scene Resource finalizer passed `cases=26 iterations=1000
elapsed_ms=4.186` with insertion-order status polling, non-terminal retention,
failed/null/wrong-type/non-Node3D/stale rejection, current exact PackedScene
adoption, accepted/rejected probe release and source boundaries. All 61
autonomous headless regressions passed; internal-access remained `30`,
documentation covered `48` module specifications, coordination retained `34`
historical expired-claim warnings and checkpoint dry-run kept all `7/7` plans.
ADT water load pipeline state passed `cases=12 iterations=100
elapsed_ms=86.170`; its initial direct no-`.godot` run passed (`94.576ms`),
WMO caches/queue/planner/registry/resolver/material/shutdown and 18 adjacent
@@ -407,9 +415,10 @@ Runtime и Editor используют facade; planner/scheduler тестиру
loader-owned request admission and shutdown drain order are unchanged.
Cached WMO scene paths retain direct negative caching for missing/oversize/
request-start failures, terminal missing state for load/validation failures and
the prior transient-reset versus final-shutdown lifetime. File-size limits,
`PackedScene` probe instantiation, WMOBuilder metadata validation and probe-node
destruction remain loader-owned before state accepts a scene.
the prior transient-reset versus final-shutdown lifetime. File-size limits and
request admission remain loader-owned; terminal I/O, `PackedScene` probe,
WMOBuilder metadata validation and probe release belong to the scene finalizer.
Rejected non-Node3D probes are now freed without changing fallback or output.
ADT water requests retain FIFO order and tile-key deduplication; tile release
removes pending requests without cancelling active work, task completion and
result publication order are unchanged, and the mutex remains limited to the
@@ -487,8 +496,9 @@ Runtime и Editor используют facade; planner/scheduler тестиру
typed WMO render build job/queue and loader enqueue/drain/cancel/clear adapters,
lightweight WMO render Resource/missing/request state and loader lookup/request/
reset adapters, plus terminal Resource polling/validation/publication finalizer,
cached WMO PackedScene/missing/request state and loader file-size/I/O/probe/
validation/reset adapters,
cached WMO PackedScene/missing/request state and loader file-size/admission/
reset adapters, plus terminal PackedScene polling/probe/lifetime/publication
finalizer,
ADT water pending/task/result pipeline state and loader enqueue/start/publish/
drain/release/reset/shutdown/metrics adapters,
stateless ADT water scene finalizer and both loader build/attach adapters,
@@ -548,8 +558,8 @@ Runtime и Editor используют facade; planner/scheduler тестиру
observers produce typed per-operation state, including native observation;
animation and static Mesh terminal ResourceLoader drains are extracted, while
action execution, material-prototype lookup and root cleanup remain loader-owned;
cached-scene WMO ResourceLoader/FileAccess I/O, live fallback and group
materialization remain in the loader; lightweight render terminal I/O is separated;
cached-scene WMO FileAccess/size admission, live fallback and group
materialization remain in the loader; both WMO terminal I/O paths are separated;
asset-backed WMO placement/portal/material/leak/p95/p99 evidence remains pending;
ADT water parsing and active worker interruption remain loader-owned;
materialization is separated but remains synchronous main-thread work behind