Controllability

Sorts a candidate attribute into automatic-local, automatic-CI or manual. It starts from the planner's Controls table, so a dimension the planner calls manual is never promoted here, then uses the reproduce manifest to demote what a container cannot mirror, and treats the members that only travel with a base image as manual because nothing sets them alone.

Functions

Link copied to clipboard
fun classify(path: String, environment: Environment, manifest: Reproduction? = null, controls: Controls = Controls.standard): ControlVerdict
Link copied to clipboard
fun hypothesis(members: List<String>, environment: Environment, manifest: Reproduction? = null, controls: Controls = Controls.standard): ControlVerdict

A hypothesis is controllable only when every member is; the first manual member says why.