An incident ownership report can derive a reviewer from a fixed queue and a selected severity threshold. The selector changes which incidents are counted.

Program

Play the program to choose the minimum severity and inspect the owner assignment.

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

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

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

    3var incidents = [1, 3, 2, 3];4var visible = incidents.where((severity) => severity >= minSeverity).length;5var owner = visible >= 3 ? 'ops' : 'lead';
    values this step3visible2minSeverity[1, 3, 2, 3]incidents
  4. owner ← ops

    4var visible = incidents.where((severity) => severity >= minSeverity).length;5var owner = visible >= 3 ? 'ops' : 'lead';6var line = 'min=$minSeverity visible=$visible $owner';
    values this stepopsowner3visible
  5. line ← min=2 visible=3 ops

    5var owner = visible >= 3 ? 'ops' : 'lead';6var line = 'min=$minSeverity visible=$visible $owner';7print(line);
    values this stepmin=2 visible=3 opsline2minSeverity3visibleopsowner
  6. print(line);

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

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

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

    3var incidents = [1, 3, 2, 3];4var visible = incidents.where((severity) => severity >= minSeverity).length;5var owner = visible >= 3 ? 'ops' : 'lead';
    values this step4visible1minSeverity[1, 3, 2, 3]incidents
  4. owner ← ops

    4var visible = incidents.where((severity) => severity >= minSeverity).length;5var owner = visible >= 3 ? 'ops' : 'lead';6var line = 'min=$minSeverity visible=$visible $owner';
    values this stepopsowner4visible
  5. line ← min=1 visible=4 ops

    5var owner = visible >= 3 ? 'ops' : 'lead';6var line = 'min=$minSeverity visible=$visible $owner';7print(line);
    values this stepmin=1 visible=4 opsline1minSeverity4visibleopsowner
  6. print(line);

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

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

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

    3var incidents = [1, 3, 2, 3];4var visible = incidents.where((severity) => severity >= minSeverity).length;5var owner = visible >= 3 ? 'ops' : 'lead';
    values this step2visible3minSeverity[1, 3, 2, 3]incidents
  4. owner ← lead

    4var visible = incidents.where((severity) => severity >= minSeverity).length;5var owner = visible >= 3 ? 'ops' : 'lead';6var line = 'min=$minSeverity visible=$visible $owner';
    values this stepleadowner2visible
  5. line ← min=3 visible=2 lead

    5var owner = visible >= 3 ? 'ops' : 'lead';6var line = 'min=$minSeverity visible=$visible $owner';7print(line);
    values this stepmin=3 visible=2 leadline3minSeverity2visibleleadowner
  6. print(line);

    6  var line = 'min=$minSeverity visible=$visible $owner';7  print(line);8}
    outputmin=3 visible=2 lead
    values this stepmin=3 visible=2 leadline
severity selector `minSeverity` controls which incident severities remain visible.
derived owner The owner is assigned from the visible count instead of from hidden state.
owner row The printed row shows threshold, visible count, and assigned owner.