diff --git a/samples/eve-browser-network/Program.cs b/samples/eve-browser-network/Program.cs index 9686b36c..21ef3c32 100644 --- a/samples/eve-browser-network/Program.cs +++ b/samples/eve-browser-network/Program.cs @@ -36,12 +36,12 @@ static async Task RunOdinAsync(Args arguments) throw new ArgumentException("The Odin fixture requires --provider-endpoint."); using var catalog = new CultMeshVerseCatalog(); catalog.Upsert(new CultMeshVerseDescriptor( - "sample.counter", - "CultMesh browser counter", + arguments.VerseId, + arguments.VerseName, CultMeshVerseAuthorityModel.OperatorCluster, - new CultMeshVerseCompatibility("cultmesh.v1", "sample-counter-v1"), + new CultMeshVerseCompatibility(arguments.TransportVersion, arguments.RulesHash), discoveryEndpoints: [arguments.ProviderEndpoint], - authorityRuntimeIds: ["sample.counter-provider"], + authorityRuntimeIds: [arguments.AuthorityRuntimeId], description: "Local executable Odin fixture for the browser/network onboarding witness.")); await using var schemaServer = new CultNetWebSocketSchemaServer(); @@ -192,6 +192,11 @@ sealed class Args public string Endpoint { get; private init; } = ""; public string ProviderEndpoint { get; private init; } = ""; public string Token { get; private init; } = "sample-session"; + public string VerseId { get; private init; } = "sample.counter"; + public string VerseName { get; private init; } = "CultMesh browser counter"; + public string AuthorityRuntimeId { get; private init; } = "sample.counter-provider"; + public string TransportVersion { get; private init; } = "cultmesh.v1"; + public string RulesHash { get; private init; } = "sample-counter-v1"; public static Args Parse(string[] values) { @@ -206,7 +211,12 @@ sealed class Args StatePath = named.GetValueOrDefault("--state", "sample-counter.cc"), Endpoint = named.GetValueOrDefault("--endpoint", ""), ProviderEndpoint = named.GetValueOrDefault("--provider-endpoint", ""), - Token = named.GetValueOrDefault("--token", "sample-session") + Token = named.GetValueOrDefault("--token", "sample-session"), + VerseId = named.GetValueOrDefault("--verse-id", "sample.counter"), + VerseName = named.GetValueOrDefault("--verse-name", "CultMesh browser counter"), + AuthorityRuntimeId = named.GetValueOrDefault("--authority-runtime-id", "sample.counter-provider"), + TransportVersion = named.GetValueOrDefault("--transport-version", "cultmesh.v1"), + RulesHash = named.GetValueOrDefault("--rules-hash", "sample-counter-v1") }; } } diff --git a/samples/eve-browser-network/README.md b/samples/eve-browser-network/README.md index 33de2dbe..3b85dbbc 100644 --- a/samples/eve-browser-network/README.md +++ b/samples/eve-browser-network/README.md @@ -24,3 +24,9 @@ the local Odin fixture, and requires the still-open browser to rediscover the route, resubscribe, execute a second command, and preserve the durable count. The fixture speaks the production Verse-catalog contract; a deployment smoke against the full Odin daemon remains a separate infrastructure gate. + +The `odin` fixture defaults to this sample's Verse, but its `--verse-id`, +`--verse-name`, `--authority-runtime-id`, `--transport-version`, and +`--rules-hash` arguments can advertise another real provider during a product +route-rotation witness. The provider endpoint remains data owned by Odin; the +consumer still connects only by stable Verse and provider identity.