using AcDream.App.Tests.Architecture; using AcDream.App.Physics; using AcDream.Runtime.Gameplay; namespace AcDream.App.Tests.Physics; /// /// C3c-F1 (2026-08-02): compiled architecture checks for the App-side halves /// of the movement-owner application seams whose production graphs have no /// focused harness (the inbound network-update controller's dependency /// set is composition-only). The Runtime lifecycle matrices carry the /// behavioral coverage; these checks keep the App wiring routed through the /// owner's typed entries instead of the throwing direct mutations that /// crashed the connected lifecycle gate twice /// (logs/connected-world-gate-20260802-122749 — SetCharacterSkills; /// logs/connected-world-gate-20260802-125907 — ApplyPhysicsState). /// public sealed class C3cF1ProductionWiringTests { [Fact] public void LocalPlayerInboundSetState_RoutesThroughTheTypedOwnerEntry() { IReadOnlyList calls = CompiledCallGraph.ReadDeclared( typeof(LiveEntityNetworkUpdateController)); Assert.Single( calls, call => call.Target.DeclaringType == typeof(PlayerMovementController) && call.Target.Name == "ApplyServerPhysicsState"); Assert.DoesNotContain( calls, call => call.Target.DeclaringType == typeof(PlayerMovementController) && call.Target.Name == nameof(PlayerMovementController.ApplyPhysicsState)); } }