[{"id":"A37","fact":"**More than one directional light in a preview scene makes the renderer print a warning ACROSS THE VIEWPORT, and the remedy is `ForwardShadingPriority`.** Only one directional light can fill the forward-shading / translucent / water / volumetric-fog slot; with several at the default priority the renderer picks by overall brightness and says so on screen.","source":"UE 5.3 / 5.4 / 5.5 / 5.6 / 5.7 / 5.8","engine":"","ue":[],"bl":[],"section":"MifBridge API contracts","value":"Engine source: the text is `MultipleDirLightsConflictForForwardShading` at Renderer/Private/LightGridInjection.cpp:1904 on 5.8 - \"Please adjust their ForwardShadingPriority. As a fallback, the main directional light will be selected based on overall brightness.\" Observed 2026-09-14 over the Skeletal Split T-pose picker, whose rig is four directional lights (key, fill, rim, bounce). `UDirectionalLightComponent::ForwardShadingPriority` is declared on every engine 5.3 through 5.8, so the fix needs no version guard; the header adds that equal priorities fall back to brightness, which is why the values must be distinct rather than merely set."},{"id":"A135","fact":"**`scene_report` leaves an actor out of its floating, sunken and tooTall verdicts by what it IS, and lists every one in `excluded[]` (label, class, reason) - since 2026-09-25. Before that it skipped any actor whose LABEL contained \"Ground\" or \"Sky\" in any case, and said nothing.** Measured on a 5.8.2 probe (a scratch project, port 8877), the same spawn before and after the fix: six identical 100-unit cubes at z=60000 labelled Skyscraper_01, Background_Wall, Underground_Pipe, GroundCover, SkyLight_Panel and Plain_Crate, plus a PointLight. Before: floating[] held Plain_Crate and the PointLight (on its sprite), none of the other five. After: all six cubes, each gap 59950, and the PointLight excluded as noGeometry. The engine templates, floating/sunken/tooTall before and after: OpenWorld (the startup map of a project with none set) 92/2/110 and 0/0/0, with 134 of its 136 bounded actors excluded - 64 LandscapeStreamingProxy (landscape), 64 WorldPartitionHLOD (hlod), DirectionalLight, SkyAtmosphere, SkyLight, ExponentialHeightFog and VolumetricCloud (noGeometry), SM_SkySphere 3,276,800 across (enclosesScene); the two checked are PlayerStart and the builder brush. Template_Default 2/2/0 and 0/0/0: the DirectionalLight and VolumetricCloud had floated on their sprites, the fog and the 8000x8000x400 Floor had sunk; the Floor is now groundPlane. 5.3.2 (a scratch project, port 8878): OpenWorld 0/0/0 with 70 of 72 excluded (64 landscape, 5 noGeometry, 1 enclosesScene). Why noGeometry works: AActor::GetComponentsBoundingBox adds every registered primitive's bounds, editor-only sprites and arrows included, so GetActorBounds(false) measures a light by its sprite; SetIsVisualizationComponent(true) sets bIsEditorOnly, as MarkAsEditorOnlySubobject() does, and USceneComponent::CreateSpriteComponent makes each component's sprite through it. test_audit_fixes T41c: 17/17 on the fixed build on 5.8.2 and 5.3.2; 7 of the 17 fail on the old build (5.8.2).","source":"MifBridge Source/MifBridge/Private/MifBridgeSpatial.cpp:1856, H_scene_report; 5.3 Engine/Source/Runtime/Engine/Private/Actor.cpp:1779, AActor::GetComponentsBoundingBox; 5.8 Engine/Source/Runtime/Engine/Private/Actor.cpp:2265, AActor::GetComponentsBoundingBox; 5.3 Engine/Source/Runtime/Engine/Classes/Components/ActorComponent.h:577, SetIsVisualizationComponent; 5.8 Engine/Source/Runtime/Engine/Classes/Components/ActorComponent.h:723, SetIsVisualizationComponent; 5.8 Engine/Source/Runtime/Engine/Private/Components/SceneComponent.cpp:894, USceneComponent::CreateSpriteComponent","engine":"","ue":[],"bl":[],"section":"MifBridge API contracts"},{"id":"U502","fact":"**Legacy cloth simulation positions (USkeletalMeshComponent::GetCurrentClothingData_GameThread) are in the cloth's reference-bone space: FClothSimulData::Transform takes them to world. Only PIE simulates, and MaxDistance is not a hard limit.** Measured on 5.8.2 against the same vertex skinned to the component's current pose: fixed particles (MaxDistance 0) 0.0005 cm; particles painted 20 moved 11.3 cm on average, but 36-42 of 957 went past their own MaxDistance, the worst by 11.2 cm on a vertex smoothing had left at 0.56 cm. The editor world gave no simulation data, and neither did a mesh 30 m off the PIE camera.","source":"5.8 `ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:751` and 5.8 `ChaosCloth/Source/ChaosCloth/Private/ChaosCloth/ChaosClothingSimulation.cpp:786`; tools/test_ue_spec_extensions_g.py SX3607-SX3609. Measured 2026-10-04","engine":"5.8","ue":["5.8"],"bl":[],"section":"UE generic routes settled live - create_asset, set_property, edit_container, call_function, evaluate_sequence (UE 5.8.2 scratch editor, 2026-10-04)"},{"id":"U670","fact":"**A Chaos wheeled vehicle's suspension constraint keeps a raw pointer to the particle under each wheel, and removing that ground particle never clears it: only the car's own body is cleared.** `FPBDSuspensionConstraints::DisconnectConstraints` nulls `GroundParticles[i]` only when `ConstrainedParticles[i] == RemovedParticle` (the chassis); the ground is set each sim step from the wheel trace's hit proxy (`FSuspensionConstraintPhysicsProxy::UpdateTargetOnPhysicsThread` -> `SetGroundParticle`) and is never registered in the ground particle's own constraint list (`AddConstraint` adds `nullptr` for it). A destroyed ground body (World Partition cell unload, a rebuilt mesh, a broken-off piece) then leaves a dangling handle, and the next graph update asserts `Index >= 0` in `TPBDRigidParticleHandleImp::ObjectState` via `IsParticleDynamic` (IslandManager.cpp:174) from `AddConstraintsToGraph` (PBDSuspensionConstraints.cpp:191). `p.Vehicle.DisableConstraintSuspension=1` (ChaosWheeledVehicleMovementComponent.cpp:74) makes no suspension constraint at all.","source":"5.8.3: Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDSuspensionConstraints.cpp:64-78, :118-139, :164-177, :182-201; Engine/Source/Runtime/Experimental/Chaos/Private/PhysicsProxy/SuspensionConstraintProxy.cpp:112-131; Engine/Plugins/Experimental/ChaosVehiclesPlugin/Source/ChaosVehicles/Private/ChaosWheeledVehicleMovementComponent.cpp:74, :605-635, :1249-1282","engine":"5.8","ue":["5.8"],"bl":[],"section":"UE generic routes settled live - create_asset, set_property, edit_container, call_function, evaluate_sequence (UE 5.8.2 scratch editor, 2026-10-04)"},{"id":"U675","fact":"**A saved Blueprint's thumbnail keeps a preview world holding an instance of its class, up to 100 of them, and the editor's delete check counts it: delete_asset's refusal after pack_level_actor was this, not the Level Instance subsystem.** The renderer lets go on FKismetEditorUtilities::OnBlueprintUnloaded. A level the packer loaded stays initialized with no world context, and Niagara's data-channel handlers keep it until OnWorldCleanup. obj refs on 5.6.1 names both.","source":"5.6 `Engine/Source/Editor/UnrealEd/Classes/ThumbnailRendering/BlueprintThumbnailRenderer.h:41`; 5.6 `Engine/Source/Editor/UnrealEd/Private/ThumbnailRendering/BlueprintThumbnailRenderer.cpp:85`; 5.6 `Engine/Plugins/FX/Niagara/Source/Niagara/Private/NiagaraWorldManager.cpp:785`","engine":"5.6","ue":["5.6"],"bl":[],"section":"UE generic routes settled live - create_asset, set_property, edit_container, call_function, evaluate_sequence (UE 5.8.2 scratch editor, 2026-10-04)","value":"test_assemblies AS105: 14 of 14 scratch assets refused before, 0 after, on 5.6.1"},{"id":"U687","fact":"**On 5.3.2 delete_asset cannot remove a map it had to load back: FNiagaraWorldManager::AddReferencedObjects holds NiagaraDataChannelHandler_Global inside it, under GCObjectReferencer.** numDeleted 0, blockedBy.engineReferencers GCObjectReferencer, transactionBuffer false, and the .umap stays open (os.remove: WinError 32). After leaving the map, clear_undo_history and obj gc, the world is out of memory and its file can be removed.","source":"Rerun: python tools/test_redirectors_map_guard.py, rows T526","engine":"5.3","ue":["5.3"],"bl":[],"section":"UE generic routes settled live - create_asset, set_property, edit_container, call_function, evaluate_sequence (UE 5.8.2 scratch editor, 2026-10-04)"}]