From 63d11c201f7ee20560be4a7d2cb47bfba9aec2e3 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 19 Jul 2026 07:44:36 +0100 Subject: [PATCH] Keep reactive surfaces on daemon frame versions --- Aetheria.State.Daemon.Smoke/Program.cs | 2 ++ .../Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Aetheria.State.Daemon.Smoke/Program.cs b/Aetheria.State.Daemon.Smoke/Program.cs index 94ef2664a..e1c8f298b 100644 --- a/Aetheria.State.Daemon.Smoke/Program.cs +++ b/Aetheria.State.Daemon.Smoke/Program.cs @@ -953,6 +953,8 @@ internal sealed class AetheriaDaemonYmirSmokeChecks node.Kind is "feedback.event" or "shot.receipt"), "the static pilot surface must not retain mutable gameplay facts"); var reactive = AetheriaRuntimeDaemonGameSurfaceBuilder.BuildReactiveGameplay(tick.Frame); + Require(reactive.Version == interruption.FrameId, + "reactive Eve surfaces and command receipts must share daemon frame-version semantics"); Require(Flatten(reactive.Surface.Root).Any(node => node.Kind == "feedback.event" && node.Props["eventKind"] == "simulation.interrupted" && node.Props["reason"] == "entity.damaged" && diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs index e4d41fa4f..808104267 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonGameSurfaceBuilder.cs @@ -206,12 +206,11 @@ namespace GameCult.Aetheria.State.Verse .Concat(receipts.Select(value => value.FrameId)) .DefaultIfEmpty(0) .Max(); - var version = checked(lastFrame * 100000L + events.Length * 100L + receipts.Length); return new AetheriaRuntimeSurfaceDocument( AetheriaRuntimeProviderIdentity.ProviderId, "game.daemon", "Aetheria Pilot Reactive State", - version, + lastFrame, frame.PublishedAtUtc, new AetheriaRuntimeSurfaceTree( "aetheria.daemon.game.reactive",