From a527f35a8b67df522796f76ee7ca0dd5883963b4 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 24 May 2026 17:11:41 +0100 Subject: [PATCH] Add network transport selector --- docs/perfect-machine-module-library.md | 2 +- src/Mimir.BufferSmoke/Program.cs | 12 ++++ .../MimirNetworkTransportSelector.cs | 61 +++++++++++++++++++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 src/Mimir.Runtime/Synchronization/MimirNetworkTransportSelector.cs diff --git a/docs/perfect-machine-module-library.md b/docs/perfect-machine-module-library.md index 1855e0b..fd0e44d 100644 --- a/docs/perfect-machine-module-library.md +++ b/docs/perfect-machine-module-library.md @@ -21,7 +21,7 @@ job-interview answer for why it belongs in the body of the machine. | Camera ingest strategies | `Mimir.Runtime` + native workers | Diagnostic metadata, managed native wrapper, native SPSC ring, and shared-GPU-texture ingest shapes. | `src/Mimir.Runtime/Synchronization/MimirCameraIngestConfiguration.cs` | | Reservoir strategies | `Mimir.Runtime` + native reservoir + Fensalir | Managed rolling buffers, native shared-edge rings, and derived GPU temporal field storage. | `src/Mimir.Runtime/Synchronization/MimirReservoirConfiguration.cs` | | Distributed witnesses | `Mimir.Runtime` + CultMesh | Raven, phone, microcontroller, and remote camera rig configurations for compact timing/path state. | `src/Mimir.Runtime/Synchronization/MimirDistributedWitnessConfiguration.cs` | -| Network transports | `Mimir.Runtime` + CultMesh | Typed timing state, debug windows, SRT bridge media, and experimental browser transport policy. | `src/Mimir.Runtime/Synchronization/MimirNetworkTransportConfiguration.cs` | +| Network transports | `Mimir.Runtime` + CultMesh | Typed timing state, debug windows, SRT bridge media, and experimental browser transport policy plus constraint-based selection. | `src/Mimir.Runtime/Synchronization/MimirNetworkTransportConfiguration.cs`, `src/Mimir.Runtime/Synchronization/MimirNetworkTransportSelector.cs` | | Authority policy | `Mimir.Runtime` | Trust decisions for Starfire loopback, Raven evidence, phone candidates, diagnostic media, and unknown nodes. | `src/Mimir.Runtime/Synchronization/MimirAuthorityPolicyConfiguration.cs`, `src/Mimir.Runtime/Synchronization/MimirAuthorityPolicyEvaluator.cs` | | Audio field configurations | `Mimir.Runtime` | Six-mic, source-based, ambisonic, and hybrid evidence field shapes. | `src/Mimir.Runtime/Synchronization/MimirAudioFieldConfiguration.cs` | | Visual fusion configurations | `Mimir.Runtime` + Fensalir | Sensor roles and fusion modes from cadence proof through full hybrid evidence. | `src/Mimir.Runtime/Synchronization/MimirVisualFusionConfiguration.cs` | diff --git a/src/Mimir.BufferSmoke/Program.cs b/src/Mimir.BufferSmoke/Program.cs index d8c8402..e874ee6 100644 --- a/src/Mimir.BufferSmoke/Program.cs +++ b/src/Mimir.BufferSmoke/Program.cs @@ -962,6 +962,15 @@ static int RunPerfectMachineProfileSmoke() "raven-scarlett-witness", new HashSet(["known-node", "matching-codebook", "clock-fit-confidence", "response-profile"], StringComparer.Ordinal), new HashSet(StringComparer.Ordinal))); + var transport = new MimirNetworkTransportSelector().Select(new MimirNetworkTransportRequest( + MimirNetworkPayloadKind.TypedTimingState, + RequiresClockInfluence: true, + AllowsRawMedia: false, + MaximumLatencyMilliseconds: 25.0, + new HashSet( + ["mimir.bioacoustic_codebook_state", "mimir.bioacoustic_decoder_state", "mimir.acoustic_path_state"], + StringComparer.Ordinal), + new HashSet(StringComparer.Ordinal))); Console.WriteLine( $"perfect-machine-profile-smoke profiles={profiles.Count} calibrationPlans={calibrationPlans.Count} audioFields={audioFields.Count} visualFields={visualFields.Count} computePlans={computePlans.Count} assemblyPlans={assemblyPlans.Count} captureProfiles={captureProfiles.Count} publications={publications.Count} languageProfiles={languageProfiles.Count} pathLearning={pathLearningProfiles.Count} localization={localizationProfiles.Count} benchmarkPanels={benchmarkPanels.Count} actuatorStrategies={actuatorStrategies.Count} cameraIngest={cameraIngestStrategies.Count} reservoirs={reservoirStrategies.Count} distributedWitnesses={distributedWitnesses.Count} networkTransports={networkTransports.Count} authorityPolicies={authorityPolicies.Count} modules={moduleCatalog.Count}"); @@ -977,6 +986,8 @@ static int RunPerfectMachineProfileSmoke() $"perfect-machine-localization candidates={localizationGrid.Count} best=({localization?.PositionMeters.X ?? float.NaN:0.000},{localization?.PositionMeters.Y ?? float.NaN:0.000},{localization?.PositionMeters.Z ?? float.NaN:0.000}) score={localization?.Score ?? 0.0:0.000}"); Console.WriteLine( $"perfect-machine-authority appliesTo=raven-scarlett-witness decision={authority.Decision} rule={authority.RuleId}"); + Console.WriteLine( + $"perfect-machine-transport payload=TypedTimingState status={transport.Status} selected={transport.Transport?.Id ?? "none"}"); return profiles.Count >= 6 && calibrationPlans.Count >= 3 && @@ -1004,6 +1015,7 @@ static int RunPerfectMachineProfileSmoke() acousticFrame.HasInput && localization is { Score: > 0.90 } && authority.Decision == MimirAuthorityDecision.TrustedEvidence && + transport.Transport?.Id == MimirNetworkTransportConfigurations.CultMeshTimingState.Id && clock is { AnchorCount: >= 4, Confidence: > 0.70 } ? 0 : 1; diff --git a/src/Mimir.Runtime/Synchronization/MimirNetworkTransportSelector.cs b/src/Mimir.Runtime/Synchronization/MimirNetworkTransportSelector.cs new file mode 100644 index 0000000..dfb36e4 --- /dev/null +++ b/src/Mimir.Runtime/Synchronization/MimirNetworkTransportSelector.cs @@ -0,0 +1,61 @@ +namespace Mimir.Runtime.Synchronization; + +public sealed record MimirNetworkTransportRequest( + MimirNetworkPayloadKind PayloadKind, + bool RequiresClockInfluence, + bool AllowsRawMedia, + double MaximumLatencyMilliseconds, + IReadOnlySet AvailableDocuments, + IReadOnlySet Conditions); + +public sealed record MimirNetworkTransportSelection( + MimirNetworkTransportConfiguration? Transport, + string Status, + string Notes); + +public sealed class MimirNetworkTransportSelector( + IReadOnlyList? transports = null) +{ + private readonly IReadOnlyList transports = + transports ?? MimirNetworkTransportConfigurations.BuiltIn; + + public MimirNetworkTransportSelection Select(MimirNetworkTransportRequest request) + { + foreach (var transport in transports.OrderBy(transport => transport.TargetLatencyMilliseconds)) + { + if (transport.PayloadKind != request.PayloadKind) + { + continue; + } + + if (request.RequiresClockInfluence && !transport.MayAffectClock) + { + continue; + } + + if (!request.AllowsRawMedia && transport.CarriesRawMedia) + { + continue; + } + + if (transport.TargetLatencyMilliseconds > request.MaximumLatencyMilliseconds) + { + continue; + } + + if (transport.RequiredDocuments.Any(required => !request.AvailableDocuments.Contains(required))) + { + continue; + } + + if (transport.RejectionConditions.Any(condition => request.Conditions.Contains(condition))) + { + continue; + } + + return new MimirNetworkTransportSelection(transport, "selected", transport.Notes); + } + + return new MimirNetworkTransportSelection(null, "no-match", "No configured transport satisfies payload, authority, latency, document, and condition constraints."); + } +}