Back to Blog
    Last Week in Unreal

    Last Week in Unreal: Infrastructure Catches Up With Itself (August 17 to 23, 2026)

    Venkat S22 min read
    Last Week in Unreal: Infrastructure Catches Up With Itself (August 17 to 23, 2026)

    Unreal Engine Weekly: Infrastructure Catches Up With Itself

    Week of August 17 – 23, 2026 | 960 commits analyzed on ue6-main, 172 on ue5-main | Branch: ue6-main

    Overview

    This was an infrastructure-heavy week across build tooling, storage, and rendering, with two notable pieces of new tech (AVBOIT and a batched Mass/SceneGraph entity-creation path) landing alongside a mid-flight Unreal Build Accelerator rebuild and a Zen server bump. Two changes were reverted in the same week they shipped, so neither is live despite appearing in the commit history. On ue5-main, weekly volume roughly tripled from 55 to 172 commits, almost entirely cherry-picks of ue6-main fixes rather than native 5.x work.

    Unreal Build Accelerator’s Widening Scope: From Cache Correctness to Full-Stack Rebuild

    Pattern: UBA has carried the weekly themes for five of the last six weeks: observability and Zen 5.8.18 (July 13-19), the cache server rewritten under production failure pressure (July 20-26), the cache server dying in production (August 3-9), the cache server becoming multi-tenant (August 10-16), and this week’s three-front rebuild. Build stayed volatile but elevated (0, 3, 98, 87, 61, 85, 121, 117), the second-highest week of the eight-week window. What changed this week is scope: the prior three weeks were a single story (cache server correctness and scale). This week spans three separate workstreams at once: RAD Linker/RAD OBJ bring-up (3c13ab27, daff30cf, 9ffd4c20), Wine remote-build correctness fixes for a CPU-spinning retry loop and a corruption bug (9a5984e2, 59b4672b), and a storage/CAS architecture pass (81ad2c35, e51f565b, c1d09790). About a fifth of this week’s 200 high-interest commits came from one engineer, all inside UBA.

    Interpretation: cache-server correctness work appears to have graduated into broader platform investment in UBA itself, new backend targets, new host-platform correctness, and storage architecture, rather than staying scoped to patching the cache service. That reads as sustained engineering investment in UBA as core infrastructure, not a one-off hardening sprint. The single-engineer concentration is worth watching: a fifth of a week’s high-interest volume in one system resting on one person is a bus-factor risk even where the work itself is sound.

    Who cares: build and tools teams running distributed builds through UBA, especially Wine-based Linux remote build farms and anyone tracking RAD Linker adoption.

    Signal strength: Strong. Five of six weeks of continuous data, widening rather than narrowing in scope.

    Renderer Decomposition Reaches Its Sixth Week Since Reopening, Still Finding Real Concurrency Bugs

    Pattern: FScene’s decomposition into modular Scene Extensions has appeared in the weekly themes continuously since July 13-19: modular decomposition, then an API break, then scene data being rebuilt underneath consumers, through August 10-16. This week’s evidence is the SceneData migration closing TSAN-caught races: a fix that removes an unvalidated write path and a stale VSM cache-manager read (bb622ce3), double-buffered dirty masks so a locking consumer can defer late marks instead of asserting (0469e076), and the primitive octree moved into its own SceneData extension (afc02eef).

    Interpretation: six consecutive weeks since reopening on July 19, and the fixes are still genuine, TSAN-confirmed concurrency bugs rather than cosmetic relocation, consistent with the pattern from prior weeks where each extraction phase turned up real defects the old structure was hiding. Merge cost for anyone carrying renderer patches keeps compounding week over week.

    Who cares: renderer and engine-core teams, and any studio maintaining an engine fork with custom renderer code.

    Signal strength: Strong. Six weeks of continuous, substantive evidence since reopening.

    Hardware Ray Tracing and Nanite RT Work Reopens After a Quiet Month

    Pattern: The prior Ray Tracing Productionization trend ran 19 weeks before resolving after July 19, with a note that a single-week revival on August 10-16 (on-demand CLAS reclamation, a LumenRef prototype) would need a second cluster to count as reopened. This week supplies it: AVBOIT ships as the new default OIT method behind an off-by-default support flag (50b9cad9), LumenRef gets an early-termination pass the commit message says roughly doubles its performance on NVIDIA hardware (773bc646), and Nanite ray tracing is restructured for per-instance BLAS support ahead of WPO-driven assembly parts (2eafc68a, e2debb04).

    Interpretation: two consecutive weeks of concrete ray-tracing and Nanite RT work after roughly a month of near-silence is enough to treat this as reopened rather than noise. The current phase reads as productionization groundwork, BLAS restructuring and vendor-specific speedups, rather than a finished, ship-ready feature.

    Who cares: graphics and rendering teams, particularly anyone using Nanite translucency or hardware-ray-traced Lumen.

    Signal strength: Moderate. Two weeks of data, reopening a previously resolved trend.

    Mass and SceneGraph Entity Work Returns With a Quantified Frame-Time Win

    Pattern: The Actor-Optional Runtime trend (Mass, EntityFramework, and SceneGraph decoupling from AActor) had substantial clusters the weeks of August 2 and August 9 but produced no fresh cluster the week of August 16. This week it returns: six commits over August 19-20 build batched Mass entity creation for the Verse-driven SceneGraph mesh component path, shipping with benchmark numbers attached, an 18% average frame-time drop on a 5,064-entity churn test, a 57% drop in per-entity cost, and a 92% drop in Mass observer-event count (72996da5).

    Interpretation: after a one-week gap, the trend returns with its most concrete evidence yet, a quantified architectural win rather than functional-correctness-only work. That suggests the Verse/SceneGraph/Mass integration is maturing from “works” toward “works at scale,” not stalling out.

    Who cares: teams building on Verse and SceneGraph with Mass-driven mesh components.

    Signal strength: Moderate. A one-week gap breaks strict continuity, but this week’s evidence is stronger than the prior clusters.


    TL;DR

    • Unreal Build Accelerator is running three workstreams at once: RAD Linker/RAD OBJ is explicitly not ready for use, but Wine remote-build correctness fixes and a CAS/storage overhaul are real, and about a fifth of this week’s high-interest commits came from a single engineer.
    • AVBOIT ships as the new default OIT method (behind an off-by-default support flag), LumenRef gets an early-termination pass that roughly doubles its performance on NVIDIA hardware, and a batched Mass/SceneGraph entity-creation path cuts churn-test frame time 18% with real benchmark numbers attached.
    • Two changes, an EnablePlugins build warning and an MVVM stale-binding crash fix, were submitted and backed out in the same week: neither is live on ue6-main, and a CL-number discrepancy in both backouts is unresolved.

    Highlights

    Unreal Build Accelerator’s three-front rebuild: RAD Linker bring-up, Wine correctness fixes, a storage overhaul

    What changed: RAD OBJ/RAD Linker support is under active bring-up: initial write support (3c13ab27, CL 57034075), a new UBT -radobj flag (daff30cf, CL 57176650), diagnostics and robustness work (86d0766a, CL 57239920), keeping cache outputs uncompressed (4f5bf804, CL 57255288), and new RADLINKER binaries the commit message describes as “based on two PRs that over time will evolve into the mainline” (9ffd4c20, CL 57296417). Separately, two Wine correctness bugs were fixed: a missing release-build detour caused Wine to reject a UBA-owned address, which made radlink spin at 100% CPU retrying cache eviction indefinitely (9a5984e2, CL 57226851), and a gap between munmap and mmap could let a concurrent mapping silently corrupt a live one (59b4672b, CL 57215747). And a storage/CAS pass landed: optimized compressed storage and CAS creation (81ad2c35, CL 57152245), parallelized session output prep (8c4fe200, CL 57157524), a fix for cache-entry lifetime and corruption during upload and maintenance with new regression coverage (e51f565b, CL 57170243), and fixed CAS/transfer lifetime leaks (c1d09790, CL 57165605). Process racing is now on by default for UbaCli with a scheduler, though the same commit’s own description admits “force-remote being broken” (077b11aa, CL 57306021).

    Why this is important: these are three different maturity levels of the same system landing in one week. RAD Linker is explicitly not released yet (“radlink.exe with support for this is not released yet”), the Wine fixes are patching live corruption and hang bugs in mixed Windows/Linux remote-build setups, and the storage overhaul is a genuine architecture pass, not incremental cleanup. Roughly 42 of this week’s 200 high-interest ue6-main commits, about a fifth, came from one engineer, all inside UBA: that’s not disqualifying on its own, but it does mean UBA’s correctness surface this week rests on one person’s work.

    Who should care: build/tools teams running distributed builds via UBA, especially Wine-based Linux remote build farms.

    Urgency: Act now for the Wine correctness fixes if you run Wine remote helpers. Track the storage overhaul. Ignore RAD Linker/RAD OBJ until it’s out of bring-up.

    Zen (DDC) server jumps to v5.8.20: a relay role, an experimental two-tier CAS, and a breaking namespace change

    What changed: a single Commit.gitdeps.xml bump (b64b19d3, CL 57118611) carries a large embedded changelog for the Zen server. Two features stand out: a new “relay” server role that turns cache traffic into a durable, replayable S3-backed stream, and an experimental two-tier generational CAS: an NVMe fast-tier read cache that falls back to the primary store, and a separate S3 remote-tier backup mechanism for the primary store. Both are opt-in and fail safe, and the commit does not describe the fast tier as backed by the remote tier, they are independently configured. The same update adds a zen trace stats mode that decodes .utrace files into structured JSON explicitly designed for “tools and LLMs” to consume. It also includes a breaking change: cache requests must now name their namespace explicitly, and the legacy ue4.ddc fallback is rejected with an HTTP 400. Buried in the changelog is a real fix: garbage collection with gc.projectstore.attachment.store enabled could misclassify live project-store attachments as unused and delete them if the oplog changed mid-GC pass; that’s now fixed.

    Why this is important: the namespace change will break any pipeline still relying on the ue4.ddc fallback the moment this version rolls out, and the GC bug was a real data-loss path for anyone running that config flag.

    Who should care: build/platform teams operating shared DDC/Zen infrastructure.

    Urgency: Act now if you rely on the ue4.ddc fallback or the gc.projectstore.attachment.store flag. Track otherwise.

    Transparency and ray tracing: AVBOIT ships, LumenRef nearly doubles in speed, Nanite RT restructures for per-instance BLAS

    What changed: AVBOIT (Adaptive Voxel-Based OIT, a SIGGRAPH 2025 technique) is implemented for both Nanite and non-Nanite translucency, built on UAV atomics with no raster-ordered views (50b9cad9, CL 57145936, jira UE-354390). It becomes the numeric default for r.OIT.Method, but its shader permutations are gated behind r.AVBOIT.Support, which defaults off at the project level, so it won’t compile into most projects unopted. Separately, LumenRef (Epic’s in-progress hardware-ray-traced Lumen path) picked up early-terminating paths for rays that won’t contribute to the final pixel, which the commit message says “on average doubles LumenRef performance” while also improving diffuse signal quality (773bc646, CL 57221354); the same commit notes this makes LumenRef “dependent on NV SER extension due to lack of GetClusterID in shader model 6.9,” so the speedup is NVIDIA-only for now. The same author also fixed a correctness bug where world-cache entries were skipped during out-of-order removal (fe7ba585, CL 57298728). And Nanite ray tracing is being restructured for per-instance BLAS support: one commit decouples the BLAS cache from RuntimeResourceId, stating the reason as “we will need to support multiple BLAS per resource (assembly parts / per-instance BLAS when using WPO)” (2eafc68a, CL 57018825), followed by a change moving to one BLAS per assembly-part instance (e2debb04, CL 57025687).

    Why this is important: AVBOIT is a real default-path change to translucency rendering, even though it’s opt-in for now. The LumenRef speedup is significant but currently NVIDIA-specific. The Nanite RT decoupling is groundwork for WPO-driven assembly parts in ray tracing, not a feature that ships this week.

    Who should care: graphics/rendering teams, especially anyone using Nanite translucency or hardware-ray-traced Lumen.

    Urgency: Track.

    SceneData migration keeps closing real TSAN races, not just moving code around

    What changed: the multi-week migration of core scene state into the tracked-access SceneData system continued. One commit explicitly fixes “TSAN races by tightening root-context access,” removing an unvalidated write path and a stale VSM cache-manager read that TSAN had actually caught (bb622ce3, CL 57261239). Another makes dirty masks double-buffered so a locking consumer can defer late marks instead of asserting (0469e076, CL 57146944). A third moves the primitive octree into its own SceneData extension (afc02eef, CL 56998444).

    Why this is important: these are confirmed race fixes caught by TSAN, not speculative hardening, which suggests the SceneData migration is finding and closing real concurrency bugs as it proceeds rather than just relocating code.

    Who should care: renderer/engine-core teams.

    Urgency: Track.

    Horde and UGS get bandwidth and reliability fixes that only bite at multi-branch, multi-agent scale

    What changed: a new opt-in UGS cross-branch cache lets UGS reuse files already synced in a sibling branch enlistment on the same machine instead of re-fetching identical revisions, matched by Perforce’s own MD5 digest; tested live against FN-Main/UE6-Main it reused 37,694 files (197.71 GB) in one sync with zero mismatches, saving roughly 70 minutes of network transfer at 400 Mbps (f25bb20b, CL 57222891). On the Horde side, pools with AutoSDK disabled were still getting AutoSDK workspaces attached on conform with no view filter, so agents tried to sync the entire AutoSDK depot and failed with an InsufficientSpaceException; the commit notes affected agents “can’t self-heal since the conform that would prune AutoSDK is the one failing” (4702f02c, CL 57222618). Other reliability fixes: full workspace resyncs after Perforce edge-server swaps when only an incremental sync was needed (79deef26, CL 57064448), scheduler parallelization plus protection against a hung Perforce query stalling the whole scheduler (a48474dc, CL 57053336), Redis 5 compatibility restored for Perforce server selection after a Redis-6-only option broke it (d470b800, CL 57061235), and dashboard job-ID queries batched to stop HTTP 414 errors on large pools (b1aaa435), with a follow-up batch-size tuning commit the same day (b7d9f085). A new “Lore” version-control server plugin and job driver for Horde also landed, explicitly flagged as “work in progress and will be changing significantly” (22fd635b, CL 57282454).

    Why this is important: the AutoSDK bug is a genuine self-inflicted-outage pattern: affected agents get stuck and can’t recover on their own because the fix path is the same conform step that’s failing. The UGS cross-branch cache is a meaningful bandwidth win for anyone syncing multiple branch enlistments on the same machine.

    Who should care: build/platform teams running Horde agent fleets or multi-branch Perforce setups.

    Urgency: Act now if you run Horde pools with AutoSDK disabled. Track the UGS cache and other reliability fixes. Ignore the Lore plugin until it stabilizes.

    Two changes shipped and reverted in the same week: neither is live

    What changed: two ue6-main changes were submitted and then backed out within the same week, with no reland visible anywhere later in this week’s window. An EnablePlugins build warning was added (“warn when a EnablePlugins entry is not built,” ef8066fa, CL 57204382), then disabled days later citing “some existing cases that need to be addressed first” (76ae75de, CL 57279538), then fully backed out (d8867032, CL 57323996). Separately, an MVVM stale-binding crash fix that registers Blueprint classes reachable from a widget’s view-binding path as compile dependencies, fixing a real PIE crash on stale property pointers (0a63dd20, CL 57089686), was backed out three CLs later (c4279e47, CL 57092963).

    Why this is important: neither change is live on ue6-main as of the end of this week. The MVVM backout matters most: the underlying PIE crash on stale property pointers is still present upstream, not fixed, despite the initial commit reading like a shipped fix. Both backouts also carry a CL-number discrepancy in their “Original CL Desc” field (57204029 vs. 57204382 for the plugin-warning backout, and 57089520 vs. 57089686 for the MVVM backout): close but non-matching numbers, most likely a Perforce shelve-vs-submit numbering artifact since the file diffs match, but this is unresolved and needs human verification before treating it as settled.

    Who should care: build/UBT teams tracking EnablePlugins warnings, UMG/MVVM teams that saw the crash-fix commit go by.

    Urgency: Track.

    SceneGraph batches mesh-entity creation into Mass, with numbers to back it up

    What changed: six commits over August 19-20 build out batched Mass entity creation for the Verse-driven SceneGraph mesh component path. The anchor commit introduces a scoped entity-creation batch that groups scene-add operations and flushes them through one batched creation call instead of paying per-entity archetype moves, and it ships benchmark numbers: on a 5,064-entity churn test, average frame time drops 18% (7.74ms to 6.31ms), per-entity AddedToScene cost drops 57%, and Mass observer-event count drops 92% (4,174 to 334) (72996da5). Follow-on commits add regression tests for teardown/observer edge cases (bf09acfc), bring material/bounds parity with the legacy static render path (95054a1b), fix Mass-rendered meshes freezing at spawn transform under mass.FullyParallel (d5e6f928), and fix signal-ordering correctness during creation (cc28c4c9). A related commit wraps the legacy PSO precache call in AutoRTFM::OnCommit because it’s reached from inside a closed Verse transaction (5b8ad594).

    Why this is important: this is a quantified architectural win, not just a functional-correctness pass. The benchmark table is the clearest evidence this week that Epic’s Verse/SceneGraph/Mass integration is maturing from “works” to “works at scale.”

    Who should care: teams building on Verse/SceneGraph with Mass-driven mesh components.

    Urgency: Track.

    MetaSound gets a live-tunable parameter-override system

    What changed: three commits from the same engineer, sharing a sync baseline, build a runtime parameter-override store for MetaSound over August 18-21. The first adds the store so config, hotfix, and console commands can seed default values for a MetaSound source’s transmittable graph inputs before future plays (9efc1e0e, jira UE-387478). The second stops the MetaSound builder from applying those overrides while a graph is being actively edited in the editor, so an artist’s authored defaults aren’t clobbered, and rekeys overrides on the asset’s full path instead of a short object name, so a record targets exactly one asset and mistyped or wildcard paths error instead of silently never applying (c9e632f6). The third splits storage into separate config and console “planes” so reapplying a config override only replaces what config contributed, without stomping console-set values (9ec434e9).

    Why this is important: this reads as infrastructure for live-tuning MetaSound values in a shipping game without republishing assets: config/hotfix for live-ops sweeps, console for local debugging, with each layer isolated from the others.

    Who should care: audio and live-ops teams.

    Urgency: Track.

    Two crashes worth flagging: a fabricated-buffer bug in Typed Elements, a silent out-of-bounds write in Mass

    What changed: FCommandBuffer::GetQueuedDataColumn was fabricating a pending column from a zero-filled, never-constructed buffer; any member with a non-trivial constructor (FText, for example) ended up with a null internal pointer that crashed the next reader, reproduced via the TEDS “Sort unsorted alerts” path (afa3dc42). Separately, Mass entity storage could run out of page space, assert via AddPage, and then continue anyway: because check/checkf compile out in Test and Shipping configurations, those configurations wrote past the end of the entity-page array while still reporting success (ecddb898).

    Why this is important: the Mass bug is a silent out-of-bounds write specifically in Test and Shipping builds, the exact configurations where the assert that would have caught it is compiled out. That’s a real memory-safety issue in shipped-build configurations, not a debug-only check.

    Who should care: Typed Elements/TEDS users, and any team running Mass at scale in Test or Shipping configurations.

    Urgency: Act now.

    Worth Tracking

    • Storage/memory-budget hardening, coordinated: the persistent storage manager’s quota subsystem picked up hotfixable quota CVars (a47df30e), a fix for QuotaMB incorrectly matching as a substring of OptionalQuotaMB (488ec976), overbudget category/stat accessors (aa3e9093), and a debug HUD panel explicitly modeled on the existing IoStoreOnDemand panel (076183e5). Separately, an Elastic IO Block Cache that borrows free memory for disk caching and gives it back under pressure landed (594f21a4), alongside a five-commit IAS/On-Demand cluster the same week, three of which share one sync baseline (b377ad48, 80b8233c, 49351bcc) and two of which land on their own baselines (2bf1b423, d2795858). A new quota system explicitly copying an existing cache HUD pattern, a new elastic disk cache, and a sprint of IAS hardening landing in the same week reads like coordinated investment in storage/memory-budget tooling, though nothing in this week’s data confirms what platform push it’s aimed at.
    • Control Rig “Rig Promises”: a single commit introduces an authored contract describing what a rig will construct before it’s actually constructed, gated behind ControlRig.Promises.Enable (default off) and labeled “first iteration” (972dad21). No user-facing effect yet, but foundational architecture worth remembering before it ships enabled.
    • RAD Linker/RAD OBJ remains explicitly work in progress (see the UBA section above): don’t build workflows around it yet.
    • AI toolset registry keeps expanding: this week added a diff-based edit_file to replace whole-file writes, because “past the orchestrator output cap the arguments JSON is cut off mid-object” (a6ee1625), a 46-crash telemetry-driven fix rejecting destroyed-object references across every toolset entry point (48951ad8, jira UE-386549), and an asyncio hang fix for a tool call where a user “waited over 90 minutes on a tool call the service had already finished” (4e425d10). The same UE-386549 ticket also shipped as a cherry-pick on ue5-main this week (see the 5.8 section below), so this is an active cross-branch push, not a one-off.
    • Minor connective tissue: TEDS adoption continues alongside the SceneGraph/Mass work above: editor viewport piloting moved from a raw actor pointer to a TEDS row handle so non-actor SceneGraph entities can be piloted (84dcfd08), with Outliner tests loosened to match (a54954a5).

    For teams shipping on 5.8

    ue5-main saw 172 commits this week (171 analyzable, 32 high-interest), up sharply from 55 the prior week (August 10-16). Most of that volume, and most of this week’s high-interest commits, is routine editor-crash-fix maintenance (Sequencer, Curve Editor, landscape, mostly single-line messages with no deeper detail available) and cherry-picks/backports of ue6-main fixes onto 5.8 rather than native 5.x development. No 5.8.x point release is named as shipping in this week’s commit messages, so none should be assumed. Six commits carry enough detail to be worth calling out:

    • A heap-use-after-free bug (caught by ASan) in the Unified Animation Framework’s static teardown path (583d0daa): teardown handlers moved from OnEnginePreExit to OnPreExit, and factory containers plus the abstract-skeleton default-bindings cache are emptied during teardown so UObject references release before the UObject system is purged (CL 57268887).
    • A landscape editor hotfix (246b4fcd): ULandscapeInfo::GetTargetLayerSettings was const-qualified but implicitly created an undo-buffer entry when none existed, corrupting the undo stack in a specific repro (undo after a landscape resize inside a level instance) and causing a check() crash on PostEditUndo. The fix returns an empty settings struct instead; a full fix (a const pointer return, all callsites updated) isn’t hotfix-compatible, so this minimal version targets 5.8.3 specifically (CL 57265755, jira UE-386585).
    • A subsystem-collection GC crash (2248b96a): if an owner is garbage-collected without calling Deinitialize(), the fallback deinitialization path could run mid-purge against an object with a reset internal index. The fix skips deinitialization during purge and logs a warning instead of ensuring, deliberately, since an ensure would just report a known condition on a patch release (CL 57235178, jira UE-385129). The same underlying bug class was also fixed on ue6-main this week.
    • A toolset object-parameter validation fix (bf7d3b85, jira UE-386549): a tool call naming an object by path could resolve an actor already destroyed but not yet garbage-collected, and nothing validated it before a full property write, eventually crashing in UWorld::AddPostProcessVolume. This caused 46 crashes across 45 users on 5.8. The fix rejects any resolved object failing IsValid() across every UToolsetLibrary entry point, with 8 new tests added (CL 57226176). Same jira ticket as the ue6-main toolset-registry fix above, part of the same cross-branch push.
    • A data layer re-entrancy fatal (b561c015): a data layer track evaluated synchronously from inside UWorld::UpdateLevelStreaming (for example, a Sequence played off an OnLevelAddedToWorld delegate during AddToWorld) could re-enter UpdateLevelStreaming and trip its fatal guard. The fix skips the synchronous flush when already inside UpdateLevelStreaming, gated by a CVar that defaults on (CL 57143995). Cherry-picked from ue6-main.
    • A Control Rig Constraints UX performance fix (3a5f7678): a details-panel refresh chain was refreshing anim details every tick, adding 8 to 20ms per tick. The fix tries a cached object-id lookup before falling back to the slower resolution path (CL 57090423, jira UE-387626). Cherry-picked from ue6-main.

    What We Ignored

    The bulk of this week’s low-interest volume was routine: binary rebuilds with no source change, single-line dependency bumps for internal Fortnite/UEFN content, test-framework wording and log-verbosity tweaks, and test-automation quality-of-life changes. A handful of commits that initially looked notable turned out to be internal build-packaging plumbing or pure dependency churn (a Linux build fix for an Open PBR Material Horde job with no functional change) and were dropped. Backout and reland pairs remain hard to track systematically; we surfaced the two that mattered above but did not attempt to count the rest.

    Closing

    A week of infrastructure catching up with itself: UBA, Zen, Horde, and UGS all moved in the same seven days, and the two backouts are a reminder to check what actually shipped rather than what was merged. The Mass/SceneGraph batching numbers are the clearest signal that the Verse-era entity work is starting to pay off in frame time, not just correctness.

    Commit SHAs are cited inline, in parentheses, next to each claim. They reference the ue6-main branch of EpicGames/UnrealEngine unless the claim is in the 5.8 section, which references ue5-main. Some of the highest-interest entries resolve to Commit.gitdeps.xml binary-manifest blobs: the commit message is real, but the code lives in Epic’s internal binaries, which we cannot see.

    Share this article