# Arch render-scene dependency decision **Date:** 2026-07-24 **Scope:** Modern Runtime Slice F1 only ## Decision Pin `Arch` version `2.1.0` directly in `AcDream.App`. Do not reference it from Core, UI abstractions, plugins, or any other production project. Do not use Arch systems, command buffers, parallel queries, jobs, events, source generators, persistence, relationships, or extension packages. The only allowed Arch namespace is: ```text src/AcDream.App/Rendering/Scene/Arch/ ``` Everything outside that folder uses acdream-owned `IRenderScene`, wrapper identities, packed component values, deltas, borrowed queries, digests, and memory-accounting values. Arch entities and primitive wrapper values cannot cross that boundary. ## Verification - Official package: [NuGet `Arch 2.1.0`](https://www.nuget.org/packages/Arch/2.1.0) - Official source/tag: [genaray/Arch `v2.1.0`](https://github.com/genaray/Arch/tree/v2.1.0) - License: [Apache License 2.0](https://github.com/genaray/Arch/blob/v2.1.0/LICENSE.MD) - Selected source tag commit: `04d52e7268eb6f376ca4841a0c204334120c5e9d` The selected package supplies .NET 6 and .NET Standard 2.1 assets, both compatible with acdream's .NET 10 App target. The v2.1.0 source was inspected for the exact API used by the adapter: - `World.Create` - generic `World.Create` - `World.Set` / `World.Get` - `World.Destroy(Entity)` / `World.Destroy(World)` - `World.Size`, `World.Capacity`, and `World.Archetypes` - archetype chunk count and chunk-size accounting The resolved dependency graph was captured with `dotnet list package --include-transitive`. It resolves: ```text Arch 2.1.0 Arch.LowLevel 1.1.5 Collections.Pooled 2.0.0-preview.27 CommunityToolkit.HighPerformance 8.4.0 Microsoft.Extensions.ObjectPool 7.0.0 ZeroAllocJobScheduler 1.1.2 ``` No package in the resolved App graph was reported vulnerable by NuGet's `--vulnerable --include-transitive` audit on 2026-07-24. The transitive job scheduler is not initialized or called by acdream; Slice F uses only single-threaded structural operations and direct component access on the existing update thread. ## Containment proof `RenderSceneArchitectureTests` enforces all of the following: 1. `Arch` is a direct package reference in `AcDream.App` only. 2. Arch namespaces occur only in the contained adapter folder. 3. Reflection finds no Arch field, property, parameter, or return type outside that namespace. 4. Raw wrapper identity extraction occurs only in the adapter (apart from the private contract declarations themselves). This is storage selection, not simulation architecture. `LiveEntityRuntime`, `GpuWorldState`, gameplay identities, retail PView, GL ownership, and all behavioral owners remain authoritative and unchanged.