Add network transport selector

This commit is contained in:
Meta Vens 2026-05-24 17:11:41 +01:00
commit a527f35a8b
3 changed files with 74 additions and 1 deletions

View file

@ -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` |

View file

@ -962,6 +962,15 @@ static int RunPerfectMachineProfileSmoke()
"raven-scarlett-witness",
new HashSet<string>(["known-node", "matching-codebook", "clock-fit-confidence", "response-profile"], StringComparer.Ordinal),
new HashSet<string>(StringComparer.Ordinal)));
var transport = new MimirNetworkTransportSelector().Select(new MimirNetworkTransportRequest(
MimirNetworkPayloadKind.TypedTimingState,
RequiresClockInfluence: true,
AllowsRawMedia: false,
MaximumLatencyMilliseconds: 25.0,
new HashSet<string>(
["mimir.bioacoustic_codebook_state", "mimir.bioacoustic_decoder_state", "mimir.acoustic_path_state"],
StringComparer.Ordinal),
new HashSet<string>(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;

View file

@ -0,0 +1,61 @@
namespace Mimir.Runtime.Synchronization;
public sealed record MimirNetworkTransportRequest(
MimirNetworkPayloadKind PayloadKind,
bool RequiresClockInfluence,
bool AllowsRawMedia,
double MaximumLatencyMilliseconds,
IReadOnlySet<string> AvailableDocuments,
IReadOnlySet<string> Conditions);
public sealed record MimirNetworkTransportSelection(
MimirNetworkTransportConfiguration? Transport,
string Status,
string Notes);
public sealed class MimirNetworkTransportSelector(
IReadOnlyList<MimirNetworkTransportConfiguration>? transports = null)
{
private readonly IReadOnlyList<MimirNetworkTransportConfiguration> 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.");
}
}