Prompt file imported from akspa0/parp-tools (
.codex/prompts/wow-viewer-world-runtime/01-negative-asset-lookup-suppression.md). Copyright stays with the author.
Implement or plan the first stabilization slice for the WorldScene split: stop repeated missing asset work from distorting runtime behavior and logs.
Read First
gillijimproject_refactor/memory-bank/activeContext.mdgillijimproject_refactor/memory-bank/progress.mdgillijimproject_refactor/plans/wow_viewer_world_runtime_service_plan_2026-03-31.mdgillijimproject_refactor/src/MdxViewer/Terrain/WorldAssetManager.csgillijimproject_refactor/src/MdxViewer/Rendering/WmoRenderer.csgillijimproject_refactor/src/MdxViewer/ViewerApp.csgillijimproject_refactor/src/MdxViewer/ViewerApp_CaptureAutomation.cswow-viewer/README.mdAGENTS.md
Goal
Remove obvious repeated asset-miss work, especially .skin companion lookups and failed MDX retries, before larger runtime-service extraction starts.
Current Concrete Problem
WorldAssetManagercurrently retries cached failed MDX loads and deferred failed MDX loads.- M2-family loads still walk candidate
.skinpaths even when the practical answer is already known to be "no usable companion skin exists for this model path". - similar companion-skin loops exist in standalone load paths and WMO doodad M2 loading.
- this creates log spam, repeated file probes, and likely frame-time noise that makes broader renderer work harder to measure accurately.
Non-Negotiable Constraints
- Do not turn this slice into the full
WorldSceneservice split. - Do not over-abstract asset loading just to match a future runtime design.
- If a reusable negative-cache contract belongs in
WowViewer.Core.Runtime, move only that narrow seam. - If the fastest correct fix needs to stay in
MdxViewerfirst, do that and describe it honestly as compatibility prep. - Do not claim renderer-performance closure from reducing one miss path.
What The Work Must Produce
- the exact repeated asset-miss paths to stop
- the exact files that should own negative-cache or failure-residency behavior
- the exact logging changes needed so the app reports the problem once without flooding
- a narrow proof plan using build, tests where practical, and optional fixed-shot capture smoke
- explicit follow-on hooks for slice 02 instead of another broad cleanup bucket
