Package-level declarations

Types

Link copied to clipboard
data class Evidence(val input: List<Run>, val runs: List<RunEvidence>, val excluded: List<Exclusion>, val universe: Int)

The spectrum input for one failure, with every run left out listed in Evidence.excluded. Sparse capsules score weakly, so Evidence.runs carries each run's attribute count and coverage for 6a.

Link copied to clipboard
data class Exclusion(val runId: String, val reason: ExclusionReason)
Link copied to clipboard
Link copied to clipboard
data class FailingStep(val job: String?, val name: String)

The step a red run failed in; FailingStep.job null matches the step name in any job.

Link copied to clipboard
object GreenToRed
Link copied to clipboard
data class GreenToRedResult(val green: String, val red: String, val kind: TransitionKind, val changes: List<AttributeDiff>, val ignored: List<AttributeDiff>, val probes: List<ProbeChange>, val steps: List<StepChange>, val background: Int)

What changed between the last green and the first red. GreenToRedResult.changes are static attribute diffs, GreenToRedResult.ignored volatile ones, GreenToRedResult.probes probes that differ, GreenToRedResult.steps steps added or removed from the job; GreenToRedResult.background counts attributes present in either capsule that did not change.

Link copied to clipboard
data class History(val key: HistoryKey, val runs: List<Run>)

The runs of one History.key, oldest first. A Run has no timestamp, so RunOrder.GIVEN trusts the importer; RunOrder.RUN_ID is for GitHub, whose run ids only grow (a re-run keeps its id).

Link copied to clipboard
data class HistoryEntry(val key: HistoryKey, val run: Run)
Link copied to clipboard
data class HistoryKey(val workflow: String, val job: String?)

One workflow and, when the history is job scoped, one job inside it.

Link copied to clipboard

What the shape of a history says, over its decisive runs (pass or fail; cancelled and unknown runs say nothing). FLAKY is two or more outcome flips, so a red that recovers is flaky.

Link copied to clipboard
object Repeat

The repeated executions of one command read as a History: the samples in the order they ran, one run each. History.state then says whether the outcomes were mixed and how, with the same flip rule as for CI runs. Nothing here classifies on its own.

Link copied to clipboard
data class RunEvidence(val runId: String, val failing: Boolean, val attributes: Int, val coverage: Long)

What one included run contributes: RunEvidence.attributes distinct static paths, and RunEvidence.coverage that count over Evidence.universe in micro-units (1_000_000 is every path any run saw).

Link copied to clipboard

How History.of orders the runs it is given.

Link copied to clipboard
data class StepChange(val job: String?, val name: String, val kind: DiffKind)
Link copied to clipboard
data class Transition(val green: Run, val red: Run)
Link copied to clipboard

NO_CAPSULE: a side has no capsule, so attribute changes are unknown.

Link copied to clipboard
Link copied to clipboard

UNKNOWN is a run with no step evidence, which is never a green.