Forge
csharpdeeb25a2
1using CascadeIDE.Models;
2
3namespace CascadeIDE.Cockpit.Composition.HostSurface;
4
5internal interface IInstrumentMountPolicyEligibilitySpecification
6{
7 bool IsSatisfiedBy(InstrumentMountPolicyRuleSettings rule, DisplaySettings displaySettings);
8}
9
10internal sealed class RolloutMetricsEligibilitySpecification : IInstrumentMountPolicyEligibilitySpecification
11{
12 public bool IsSatisfiedBy(InstrumentMountPolicyRuleSettings rule, DisplaySettings displaySettings)
13 {
14 var m = displaySettings.Mount;
15 if (!m.EnforceEligibility)
16 return true;
17
18 if (m.RequireScores
19 && (rule.SaScore is null || rule.PerformanceScore is null || rule.WorkloadScore is null))
20 return false;
21
22 if (rule.SaScore is { } sa && sa < m.MinSa)
23 return false;
24 if (rule.PerformanceScore is { } perf && perf < m.MinPerformance)
25 return false;
26 if (rule.WorkloadScore is { } workload && workload > m.MaxWorkload)
27 return false;
28
29 return true;
30 }
31}
32
View only · write via MCP/CIDE