Domain 5 capstone: a triage runner with four outcomes, proven on planted faults

capstone · 150 min · Objective 5.2

Task

Build the instrument the whole course has been heading toward: a runner that takes a symptom, walks the method, and returns a component, a next test, an escalation, or NOT DETERMINED -- then prove it by planting six faults and showing it names each one, and one it cannot.

Steps

  1. Write lab/triage/rules.csv with header symptom_pattern,next_test,on_pass,on_fail,cost with at least fifteen rules drawn from the map in the applied lab.
  2. Write lab/core1-runner.sh that reads a symptom, applies the rules cheapest-first, records every step to lab/triage/session.csv with header timestamp,step,test,result, and ends in one of four outcomes: COMPONENT, NEXT TEST, ESCALATE, or NOT DETERMINED.
  3. Plant six faults from across the domains -- a display input, a wrong mask, a disabled adapter, a paused print queue, a stale DNS cache, and a resolution the display cannot show -- and run the runner against each.
  4. Record the results in lab/triage/proof.csv with header fault,outcome,named,correct,seconds, and include one case the runner CANNOT resolve, recorded with outcome NOT DETERMINED.
  5. Revert every fault, run the runner clean, and write lab/triage/limits.md listing at least six faults the runner will never resolve and why -- which is the file that keeps it from being trusted past its evidence.

Verify

awk -F, 'NR>1 && NF>=5 {n++} END {print n" triage rule(s)"}' lab/triage/rules.csv
test -s lab/core1-runner.sh && echo "runner present"
grep -c 'NOT DETERMINED' lab/core1-runner.sh
grep -c 'ESCALATE' lab/core1-runner.sh
awk -F, 'NR>1 && NF>=4 {n++} END {print n" session step(s) logged"}' lab/triage/session.csv
awk -F, 'NR>1 && NF>=5 {n++} END {print n" run(s)"}' lab/triage/proof.csv
awk -F, 'NR>1 && tolower($4)=="yes" {n++} END {print n+0" correctly named"}' lab/triage/proof.csv
awk -F, 'NR>1 && $2=="NOT DETERMINED" {n++} END {print n+0" undetermined run(s)"}' lab/triage/proof.csv
grep -c . lab/triage/limits.md

Fifteen or more rules, a runner containing both the NOT DETERMINED and ESCALATE paths, seven or more runs of which at least five are correctly named and at least one is undetermined, and six or more stated limits. A runner that named every fault has not been given a fault it cannot name, and until it has, its successes are unqualified.

Notes

The four outcomes are the whole design. A tool with two -- found it, did not find it -- will report an unresolvable fault as a wrong component, and a technician will act on that. NOT DETERMINED and ESCALATE are what make the other two believable.

This is an independent study companion for CompTIA A+ Core 1 220-1201 and is not produced by or endorsed by CompTIA.