rankComparedFindings function
List<ComparedFinding>
rankComparedFindings({
- List<
ComparedItem> previews = const [], - List<
ScenarioComparison> scenarios = const [],
Every row worth attention, worst first, both halves merged.
One ranking, however many surfaces ask for it. ComparedState is declared
worst-first, so ranking is a sort — and doing it here rather than at each
surface is what stops the CLI, the MCP action and a consumer's script from
each having their own idea of what counts and in what order.
Implementation
List<ComparedFinding> rankComparedFindings({
List<ComparedItem> previews = const [],
List<ScenarioComparison> scenarios = const [],
}) =>
<ComparedFinding>[
for (var item in previews)
if (isComparedFinding(item.state))
ComparedFinding(
id: item.id,
half: ComparedHalfKind.previews,
state: item.state,
note: item.note,
package: item.package,
preview: item,
),
for (var scenario in scenarios)
if (isComparedFinding(scenario.state))
ComparedFinding(
id: scenario.scenario,
half: ComparedHalfKind.scenarios,
state: scenario.state,
package: scenario.package,
scenario: scenario,
),
]..sort(
(a, b) => a.state.index == b.state.index
? a.id.compareTo(b.id)
: a.state.index.compareTo(b.state.index),
);