A queue report can stay deterministic by keeping severities in a local list and deriving counts from a selected threshold. The selector changes which severities are visible.

Program

Play the program to choose a severity threshold and inspect the queue counts.

minSeverity
incident_queue_reliability_report.dart
Replay: real traced execution (multi-file project)
void main() {
  var minSeverity = 2;
  var severities = [1, 2, 3, 3];
  var visible = severities.where((severity) => severity >= minSeverity).length;
  var high = severities.where((severity) => severity >= 3).length;
  var line = 'min=$minSeverity visible=$visible high=$high';
  print(line);
}
void main() {
  var minSeverity = 1;
  var severities = [1, 2, 3, 3];
  var visible = severities.where((severity) => severity >= minSeverity).length;
  var high = severities.where((severity) => severity >= 3).length;
  var line = 'min=$minSeverity visible=$visible high=$high';
  print(line);
}
void main() {
  var minSeverity = 3;
  var severities = [1, 2, 3, 3];
  var visible = severities.where((severity) => severity >= minSeverity).length;
  var high = severities.where((severity) => severity >= 3).length;
  var line = 'min=$minSeverity visible=$visible high=$high';
  print(line);
}
  1. minSeverity ← 2

    1void main() {2  var minSeverity = 2;3  var severities = [1, 2, 3, 3];
    values this step2minSeverity
  2. severities ← [1, 2, 3, 3]

    2var minSeverity = 2;3var severities = [1, 2, 3, 3];4var visible = severities.where((severity) => severity >= minSeverity).length;
    values this step[1, 2, 3, 3]severities
  3. visible ← 3

    3var severities = [1, 2, 3, 3];4var visible = severities.where((severity) => severity >= minSeverity).length;5var high = severities.where((severity) => severity >= 3).length;
    values this step3visible2minSeverity[1, 2, 3, 3]severities
  4. high ← 2

    4var visible = severities.where((severity) => severity >= minSeverity).length;5var high = severities.where((severity) => severity >= 3).length;6var line = 'min=$minSeverity visible=$visible high=$high';
    values this step2high[1, 2, 3, 3]severities
  5. line ← min=2 visible=3 high=2

    5var high = severities.where((severity) => severity >= 3).length;6var line = 'min=$minSeverity visible=$visible high=$high';7print(line);
    values this stepmin=2 visible=3 high=2line2minSeverity3visible2high
  6. print(line);

    6  var line = 'min=$minSeverity visible=$visible high=$high';7  print(line);8}
    outputmin=2 visible=3 high=2
    values this stepmin=2 visible=3 high=2line
  1. minSeverity ← 1

    1void main() {2  var minSeverity = 1;3  var severities = [1, 2, 3, 3];
    values this step1minSeverity
  2. severities ← [1, 2, 3, 3]

    2var minSeverity = 1;3var severities = [1, 2, 3, 3];4var visible = severities.where((severity) => severity >= minSeverity).length;
    values this step[1, 2, 3, 3]severities
  3. visible ← 4

    3var severities = [1, 2, 3, 3];4var visible = severities.where((severity) => severity >= minSeverity).length;5var high = severities.where((severity) => severity >= 3).length;
    values this step4visible1minSeverity[1, 2, 3, 3]severities
  4. high ← 2

    4var visible = severities.where((severity) => severity >= minSeverity).length;5var high = severities.where((severity) => severity >= 3).length;6var line = 'min=$minSeverity visible=$visible high=$high';
    values this step2high[1, 2, 3, 3]severities
  5. line ← min=1 visible=4 high=2

    5var high = severities.where((severity) => severity >= 3).length;6var line = 'min=$minSeverity visible=$visible high=$high';7print(line);
    values this stepmin=1 visible=4 high=2line1minSeverity4visible2high
  6. print(line);

    6  var line = 'min=$minSeverity visible=$visible high=$high';7  print(line);8}
    outputmin=1 visible=4 high=2
    values this stepmin=1 visible=4 high=2line
  1. minSeverity ← 3

    1void main() {2  var minSeverity = 3;3  var severities = [1, 2, 3, 3];
    values this step3minSeverity
  2. severities ← [1, 2, 3, 3]

    2var minSeverity = 3;3var severities = [1, 2, 3, 3];4var visible = severities.where((severity) => severity >= minSeverity).length;
    values this step[1, 2, 3, 3]severities
  3. visible ← 2

    3var severities = [1, 2, 3, 3];4var visible = severities.where((severity) => severity >= minSeverity).length;5var high = severities.where((severity) => severity >= 3).length;
    values this step2visible3minSeverity[1, 2, 3, 3]severities
  4. high ← 2

    4var visible = severities.where((severity) => severity >= minSeverity).length;5var high = severities.where((severity) => severity >= 3).length;6var line = 'min=$minSeverity visible=$visible high=$high';
    values this step2high[1, 2, 3, 3]severities
  5. line ← min=3 visible=2 high=2

    5var high = severities.where((severity) => severity >= 3).length;6var line = 'min=$minSeverity visible=$visible high=$high';7print(line);
    values this stepmin=3 visible=2 high=2line3minSeverity2visible2high
  6. print(line);

    6  var line = 'min=$minSeverity visible=$visible high=$high';7  print(line);8}
    outputmin=3 visible=2 high=2
    values this stepmin=3 visible=2 high=2line
severity threshold `minSeverity` chooses which incidents are visible in the report.
where length Filtering with `.where(...).length` gives a count without mutating the list.
independent high count The `high` count stays fixed because it always uses severity `>= 3`.