grade_fault — the perfect path ok scores 100 (50 root + 30 fix + 20 efficiency + 5 speed, clamped) ok is marked correct ok passes ok out of 100 grade_fault — the worst path ok scores 0 ok is not correct ok says the root cause was missed ok says no fix was submitted grade_fault — partial credit is exact ok root cause only, at optimal commands: 50 + 20 ok efficiency decays linearly past optimal ok and never goes negative grade_fault — penalties ok three hints cost 15 ok and the breakdown says so ok two wrong guesses cost 20 grade_fault — tier 3 must prove the fix worked ok an unverified fix gives the fix marks back ok and says why ok a verified one keeps them grade_fault — the speed bonus ok is not paid over par ok so a wrong guess over par really costs 10 ok and inside par the bonus covers it grade_fault — the client cannot post a score ok a response claiming 100 still scores its 20 for efficiency only ok and is not correct fault_matches — honest phrasings of the diagnosis pass ok "DHCP Client service stopped, so the machine fell back to APIPA" ok "dhcp client stopped" ok "The DHCP service was not running" ok "dhcp is disabled" ok "the machine has an apipa address" ok "it gave itself 169.254.14.9 because nothing answered" fault_matches — wrong answers do not ok "the network cable is faulty" is refused ok "dns is down" is refused ok "a proxy was left configured" is refused ok "" is refused ok " " is refused fault_matches — a fragment of the answer key is not an answer ok "start" alone does not earn the fix marks ok "dhcp" alone does not either ok "the" does not match the root cause ok but a real short answer still does ok and so does a full one fault_matches — the fix list ok "net start dhcp" ok "Start-Service Dhcp" ok "restarted the DHCP client" ok "started dhcp and ran ipconfig /renew" ok "enabled DHCP again" ok "rebooted the router" is refused ok "replaced the cable" is refused strip_answers — the blunt instrument ok drops root_cause ok drops accepted_fixes ok drops accepted_diagnoses ok drops hints ok drops cause_keywords ok drops fix_keywords ok drops optimal_commands ok keeps the machine ok keeps the ticket practice_fault_config — what practice.php actually sends ok no accepted_fixes in the payload ok no accepted_diagnoses in the payload ok no cause_keywords in the payload ok no fix_keywords in the payload ok no optimal_commands in the payload ok no apipa addressing is the single in the payload ok no root_cause key ok no hints ok no debrief — it is released by the result screen ok no distractors list to diff against ok one shuffled list of causes, all six of them ok the true cause is in it ok so is the distractor "Network cable faulty or …" ok so is the distractor "DNS server unreachable…" ok so is the distractor "New mouse driver conflic…" ok so is the distractor "Proxy left configured af…" ok so is the distractor "Site-wide internet outag…" ok the useful/useless tell is stripped from the questions ok but the questions and answers survive ok the hint count is sent, the hints are not ok the machine survives intact ok and the code is carried practice_fault_config — a shuffle that is actually a shuffle ok the correct answer is not always in the same position practice_fault_config — a fault with no scenario ok returns nothing rather than exploding ok and an item with no scenario id too bin/seed-net-101.php — the content as it will be seeded ok the payload literal is where this test expects it ok it survives a JSON round trip (the column is JSON) ok the key accepts "DHCP Client service stopped, so the machine fell back to APIPA" ok the key accepts "the dhcp client service was stopped" ok the key accepts "DHCP not running so it took an APIPA address" ok the key accepts "dhcp service is disabled" ok the key accepts "the pc gave itself 169.254.30.2, no dhcp" ok and the fix "started the DHCP Client service" ok and the fix "net start dhcp" ok and the fix "Start-Service Dhcp then ipconfig /renew" ok and the fix "restarted the dhcp client and confirmed with ipconfig /all" ok a trainee who blames the cable scores nothing for it ok and neither does the reporter's mouse theory ok the distractor "Network cable faulty or unplug…" does not score ok the distractor "DNS server unreachable…" does not score ok the distractor "New mouse driver conflict…" does not score ok the distractor "Proxy left configured after a …" does not score ok the distractor "Site-wide internet outage…" does not score ok the browser payload leaks no "apipa addressing is the single" ok the browser payload leaks no "169.254.x.x" ok the browser payload leaks no "start-service dhcp" ok the browser payload leaks no "accepted_" ok the browser payload leaks no "hints" ok the browser payload leaks no "distractors" ok the root cause appears exactly once in the whole payload ok and it is inside cause_options ok the machine still boots broken ok and the service that repairs it is named ok six causes to choose between ok three hints, none of them sent .. wrote tests/js/net-101-config.json for the browser tests ok the seeded optimal command count matches the optimal path it teaches 110 passed, 0 failed