Package-level declarations
Types
The failure a ranking is conditioned on: the text symptoms (signature, signal, transport) as one lowercase text and the exit codes, taken from symptoms as read from a log.
What two runs that carry samples say about time and memory. A measurement differs only when the ranges do not overlap: the minimum of the larger side is above the maximum of the smaller side. Then the larger second run gets a SymptomKind.SLOWER (wall time) or SymptomKind.MEMORY (peak memory) symptom whose value is the ratio of the medians in tenths, as text such as 2.5 times slower. Overlapping ranges give a line that says so and no symptom, and a first run that is larger gives a line and no symptom. A side with fewer than MIN_SAMPLES samples has no spread and is not compared. lines also carry each limit that applies; none names a cause.
One piece of evidence from a log. value is already normalized (see Signature), line is the 1-based line of the first occurrence and count the number of occurrences with the same job, kind and value. A DURATION value is whole milliseconds as text. SLOWER and MEMORY come from repeated runs, not from a log (see Performance); their value reads 2.5 times slower.
Reads symptoms from normalized log text; never throws.