resolveConflictingGuidance function

DecisionGuidance resolveConflictingGuidance(
  1. List<DecisionGuidance> matches,
  2. ConflictResolution strategy
)

Resolve conflicting guidance from multiple matched policies.

Implements all 9 ConflictResolution strategies.

Implementation

DecisionGuidance resolveConflictingGuidance(
  List<DecisionGuidance> matches,
  ConflictResolution strategy,
) {
  if (matches.isEmpty) return DecisionGuidance.defaultProceed;
  if (matches.length == 1) return matches.first;

  return switch (strategy) {
    ConflictResolution.firstMatch => matches.first,
    ConflictResolution.lastMatch => matches.last,
    ConflictResolution.highestPriority =>
      matches.first, // Already sorted by priority
    ConflictResolution.mostRestrictive => _mostRestrictive(matches),
    ConflictResolution.mostSpecific =>
      matches.last, // Last in sorted = most specific
    ConflictResolution.unanimous => _unanimous(matches),
    ConflictResolution.majority => _majority(matches),
    ConflictResolution.merge => _merge(matches),
    ConflictResolution.custom =>
      matches.first, // Custom requires app-level implementation
  };
}