Rename daemon provider witnesses to record refs

This commit is contained in:
Meta Vens 2026-06-28 07:07:44 +01:00
commit 9d623a24c6
5 changed files with 83 additions and 46 deletions

View file

@ -8773,10 +8773,12 @@ static void RequireDaemonVersePublication(string root)
"[CultDocument(\"gamecult.aetheria.daemon_command_boundary\", \"gamecult.aetheria.daemon_command_boundary.v1\")]",
"[CultDocument(\"gamecult.aetheria.daemon_frame\", \"gamecult.aetheria.daemon_frame.v1\")]",
"[CultDocument(\"gamecult.aetheria.daemon_command\", \"gamecult.aetheria.daemon_command.v1\")]",
"EveGuiSurfaceWitnessPath",
"EveTuiSurfaceWitnessPath",
"EditorGuiSurfaceWitnessPath",
"EditorTuiSurfaceWitnessPath"
"FrameRecordRef",
"SoaViewRecordRef",
"EveGuiSurfaceRecordRef",
"EveTuiSurfaceRecordRef",
"EditorGuiSurfaceRecordRef",
"EditorTuiSurfaceRecordRef"
};
var missingDocumentSymbols = requiredDocumentSymbols
.Where(symbol => !daemonDocuments.Contains(symbol, StringComparison.Ordinal))
@ -8788,6 +8790,30 @@ static void RequireDaemonVersePublication(string root)
string.Join(", ", missingDocumentSymbols));
}
var forbiddenDaemonProviderDocumentSymbols = new[]
{
"StateWitnessPath",
"FrameWitnessPath",
"SoaWitnessPath",
"HealthWitnessPath",
"CommandBoundaryWitnessPath",
"EveGuiSurfaceWitnessPath",
"EveTuiSurfaceWitnessPath",
"EditorGuiSurfaceWitnessPath",
"EditorTuiSurfaceWitnessPath",
"AssetManifestWitnessPath"
};
var daemonProviderDocumentHits = forbiddenDaemonProviderDocumentSymbols
.Where(symbol => daemonDocuments.Contains(symbol, StringComparison.Ordinal) ||
daemonEditorSurfaceBuilder.Contains(symbol, StringComparison.Ordinal))
.ToArray();
if (daemonProviderDocumentHits.Length > 0)
{
throw new InvalidOperationException(
"Daemon provider advertisement still exposes witness-path vocabulary instead of managed record refs: " +
string.Join(", ", daemonProviderDocumentHits));
}
if (!daemonSoaDocuments.Contains("[CultDocument(\"gamecult.aetheria.daemon_soa_view\", \"gamecult.aetheria.daemon_soa_view.v1\")]", StringComparison.Ordinal))
{
throw new InvalidOperationException("Daemon SoA view is no longer a registered CultCache/CultNet document.");
@ -9444,7 +9470,14 @@ static void RequireDaemonVersePublication(string root)
"AetheriaRuntimeDaemonCommandBoundaryDocument commandBoundary",
"\"editor.daemon\"",
"\"Verse Provider\"",
"\"Witnesses\"",
"\"Managed Records\"",
"\"aetheria.daemon.editor.records\"",
"provider.FrameRecordRef",
"provider.SoaViewRecordRef",
"provider.HealthRecordRef",
"provider.CommandBoundaryRecordRef",
"provider.EveGuiSurfaceRecordRef",
"provider.EditorGuiSurfaceRecordRef",
"\"Designer Surfaces\"",
"AetheriaRuntimeSurfaceDocument",
"\"Typed Commands\"",

View file

@ -450,25 +450,26 @@ public class DaemonRuntimeDocumentTests
Assert.AreEqual("aetheria.daemon", providerAdvertisement.ProviderId);
Assert.AreEqual("test-daemon", providerAdvertisement.DaemonId);
Assert.AreEqual("cultmesh://aetheria.test/eve/providers/aetheria.daemon", providerAdvertisement.CultMeshAddress);
Assert.AreEqual(AetheriaRuntimeDaemonFrameStore.GetFramePath(statePath), providerAdvertisement.FrameWitnessPath);
Assert.AreEqual(AetheriaRuntimeDaemonPublicationStore.GetHealthPath(statePath), providerAdvertisement.HealthWitnessPath);
Assert.AreEqual(AetheriaRuntimeVerseRecordKeys.DaemonFrameLatest.ToString(), providerAdvertisement.FrameRecordRef);
Assert.AreEqual(AetheriaRuntimeVerseRecordKeys.DaemonSoaViewLatest.ToString(), providerAdvertisement.SoaViewRecordRef);
Assert.AreEqual(AetheriaRuntimeVerseRecordKeys.DaemonHealth.ToString(), providerAdvertisement.HealthRecordRef);
Assert.AreEqual(
AetheriaRuntimeDaemonPublicationStore.GetCommandBoundaryPath(statePath),
providerAdvertisement.CommandBoundaryWitnessPath);
AetheriaRuntimeVerseRecordKeys.DaemonCommandBoundary.ToString(),
providerAdvertisement.CommandBoundaryRecordRef);
Assert.AreEqual(
AetheriaRuntimeDaemonPublicationStore.GetGameSurfacePath(statePath),
providerAdvertisement.EveGuiSurfaceWitnessPath);
AetheriaRuntimeVerseRecordKeys.DaemonGameSurface.ToString(),
providerAdvertisement.EveGuiSurfaceRecordRef);
Assert.AreEqual(
AetheriaRuntimeDaemonPublicationStore.GetGameTuiSurfacePath(statePath),
providerAdvertisement.EveTuiSurfaceWitnessPath);
AetheriaRuntimeVerseRecordKeys.DaemonGameTuiSurface.ToString(),
providerAdvertisement.EveTuiSurfaceRecordRef);
Assert.AreEqual(AetheriaRuntimeDaemonGameSurfaceBuilder.SurfaceId, providerAdvertisement.EveGuiSurfaceId);
Assert.AreEqual(AetheriaRuntimeDaemonGameSurfaceBuilder.TuiSurfaceId, providerAdvertisement.EveTuiSurfaceId);
Assert.AreEqual(
AetheriaRuntimeDaemonPublicationStore.GetEditorSurfacePath(statePath),
providerAdvertisement.EditorGuiSurfaceWitnessPath);
AetheriaRuntimeVerseRecordKeys.DaemonEditorSurface.ToString(),
providerAdvertisement.EditorGuiSurfaceRecordRef);
Assert.AreEqual(
AetheriaRuntimeDaemonPublicationStore.GetEditorTuiSurfacePath(statePath),
providerAdvertisement.EditorTuiSurfaceWitnessPath);
AetheriaRuntimeVerseRecordKeys.DaemonEditorTuiSurface.ToString(),
providerAdvertisement.EditorTuiSurfaceRecordRef);
Assert.AreEqual(AetheriaRuntimeDaemonEditorSurfaceBuilder.SurfaceId, providerAdvertisement.EditorGuiSurfaceId);
Assert.AreEqual(AetheriaRuntimeDaemonEditorSurfaceBuilder.TuiSurfaceId, providerAdvertisement.EditorTuiSurfaceId);
CollectionAssert.Contains(providerAdvertisement.PublishedSchemas, AetheriaRuntimeDaemonSchemas.Command);

View file

@ -213,25 +213,25 @@ namespace GameCult.Aetheria.State.Verse
public string PublishedAtUtc { get; set; } = "";
[Key(5)]
public string StateWitnessPath { get; set; } = "";
public string StateRecordRef { get; set; } = "";
[Key(6)]
public string FrameWitnessPath { get; set; } = "";
public string FrameRecordRef { get; set; } = "";
[Key(7)]
public string SoaWitnessPath { get; set; } = "";
public string SoaViewRecordRef { get; set; } = "";
[Key(8)]
public string HealthWitnessPath { get; set; } = "";
public string HealthRecordRef { get; set; } = "";
[Key(9)]
public string CommandBoundaryWitnessPath { get; set; } = "";
public string CommandBoundaryRecordRef { get; set; } = "";
[Key(10)]
public string EveGuiSurfaceWitnessPath { get; set; } = "";
public string EveGuiSurfaceRecordRef { get; set; } = "";
[Key(11)]
public string EveTuiSurfaceWitnessPath { get; set; } = "";
public string EveTuiSurfaceRecordRef { get; set; } = "";
[Key(12)]
public string EveGuiSurfaceId { get; set; } = "aetheria.game";
@ -240,10 +240,10 @@ namespace GameCult.Aetheria.State.Verse
public string EveTuiSurfaceId { get; set; } = "aetheria.game.tui";
[Key(14)]
public string EditorGuiSurfaceWitnessPath { get; set; } = "";
public string EditorGuiSurfaceRecordRef { get; set; } = "";
[Key(15)]
public string EditorTuiSurfaceWitnessPath { get; set; } = "";
public string EditorTuiSurfaceRecordRef { get; set; } = "";
[Key(16)]
public string EditorGuiSurfaceId { get; set; } = "aetheria.daemon.editor";
@ -261,7 +261,7 @@ namespace GameCult.Aetheria.State.Verse
public string CultMeshAddress { get; set; } = "cultmesh://aetheria.local/eve/providers/aetheria.daemon";
[Key(21)]
public string AssetManifestWitnessPath { get; set; } = "";
public string AssetManifestRecordRef { get; set; } = "";
public static AetheriaRuntimeDaemonProviderAdvertisementDocument Create(
string stateFilePath,
@ -274,18 +274,18 @@ namespace GameCult.Aetheria.State.Verse
VerseId = string.IsNullOrWhiteSpace(verseId) ? "aetheria.local" : verseId,
DaemonId = string.IsNullOrWhiteSpace(daemonId) ? "aetheria-daemon" : daemonId,
PublishedAtUtc = DateTime.UtcNow.ToString("O"),
StateWitnessPath = stateFilePath ?? "",
FrameWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonFramePath(stateFilePath ?? ""),
SoaWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonSoaViewPath(stateFilePath ?? ""),
HealthWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonHealthPath(stateFilePath ?? ""),
AssetManifestWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonAssetManifestPath(stateFilePath ?? ""),
CommandBoundaryWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonCommandBoundaryPath(stateFilePath ?? ""),
EveGuiSurfaceWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonGameSurfacePath(stateFilePath ?? ""),
EveTuiSurfaceWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonGameTuiSurfacePath(stateFilePath ?? ""),
StateRecordRef = stateFilePath ?? "",
FrameRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonFrameLatest.ToString(),
SoaViewRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonSoaViewLatest.ToString(),
HealthRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonHealth.ToString(),
AssetManifestRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonAssetManifest.ToString(),
CommandBoundaryRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonCommandBoundary.ToString(),
EveGuiSurfaceRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonGameSurface.ToString(),
EveTuiSurfaceRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonGameTuiSurface.ToString(),
EveGuiSurfaceId = AetheriaRuntimeDaemonGameSurfaceBuilder.SurfaceId,
EveTuiSurfaceId = AetheriaRuntimeDaemonGameSurfaceBuilder.TuiSurfaceId,
EditorGuiSurfaceWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonEditorSurfacePath(stateFilePath ?? ""),
EditorTuiSurfaceWitnessPath = AetheriaRuntimeStateBoundary.GetDaemonEditorTuiSurfacePath(stateFilePath ?? ""),
EditorGuiSurfaceRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonEditorSurface.ToString(),
EditorTuiSurfaceRecordRef = AetheriaRuntimeVerseRecordKeys.DaemonEditorTuiSurface.ToString(),
EditorGuiSurfaceId = AetheriaRuntimeDaemonEditorSurfaceBuilder.SurfaceId,
EditorTuiSurfaceId = AetheriaRuntimeDaemonEditorSurfaceBuilder.TuiSurfaceId,
CultMeshAddress = string.IsNullOrWhiteSpace(cultMeshAddress)

View file

@ -45,17 +45,17 @@ namespace GameCult.Aetheria.State.Verse
Metric("aetheria.daemon.editor.provider.provider", "Provider", provider.ProviderId),
Metric("aetheria.daemon.editor.provider.daemon", "Daemon", provider.DaemonId),
Metric("aetheria.daemon.editor.provider.transport", "CultMesh", provider.CultMeshAddress),
Metric("aetheria.daemon.editor.provider.state", "State Witness", provider.StateWitnessPath)),
Metric("aetheria.daemon.editor.provider.state", "State", provider.StateRecordRef)),
Node(
"aetheria.daemon.editor.witnesses",
"aetheria.daemon.editor.records",
"card",
new[] { ("title", "Witnesses") },
Metric("aetheria.daemon.editor.witnesses.frame", "Frame", provider.FrameWitnessPath),
Metric("aetheria.daemon.editor.witnesses.soa", "SoA", provider.SoaWitnessPath),
Metric("aetheria.daemon.editor.witnesses.health", "Health", provider.HealthWitnessPath),
Metric("aetheria.daemon.editor.witnesses.commands", "Command Boundary", provider.CommandBoundaryWitnessPath),
Metric("aetheria.daemon.editor.witnesses.game", "Game Surface", provider.EveGuiSurfaceWitnessPath),
Metric("aetheria.daemon.editor.witnesses.editor", "Editor Surface", provider.EditorGuiSurfaceWitnessPath)),
new[] { ("title", "Managed Records") },
Metric("aetheria.daemon.editor.records.frame", "Frame", provider.FrameRecordRef),
Metric("aetheria.daemon.editor.records.soa", "SoA", provider.SoaViewRecordRef),
Metric("aetheria.daemon.editor.records.health", "Health", provider.HealthRecordRef),
Metric("aetheria.daemon.editor.records.commands", "Command Boundary", provider.CommandBoundaryRecordRef),
Metric("aetheria.daemon.editor.records.game", "Game Surface", provider.EveGuiSurfaceRecordRef),
Metric("aetheria.daemon.editor.records.editor", "Editor Surface", provider.EditorGuiSurfaceRecordRef)),
Node(
"aetheria.daemon.editor.health",
"card",

View file

@ -27,6 +27,9 @@ namespace GameCult.Aetheria.State.Verse
public static CultRecordKey DaemonCommandBoundary { get; } =
new CultRecordKey("daemon:aetheria.command_boundary.v1");
public static CultRecordKey DaemonAssetManifest { get; } =
new CultRecordKey("daemon:aetheria.asset_manifest.v1");
public static CultRecordKey VerseAuthorityPolicy { get; } =
new CultRecordKey(AetheriaRuntimeVerseAuthorityPolicyDocument.DocumentKey);