Functions
The members of a manual experiment that no intervention can set, each with why.
Applies interventions to base in order. In a container each one is also applied alone and checked against the unchanged control: its attributes must be mirrored and the image, command, run flags or Dockerfile steps must differ, so an intervention that does not reach the container is refused with the manifest's reason instead of being counted as a change.
The arms of a planner experiment: the passing side unchanged against the passing side with every flipped hypothesis moved to the failing capsule's values. Members that no intervention can set, or that the container does not mirror, become blockers and the experiment is not executable. A manual experiment has no arms and returns null; its instructions are the experiment.
Builds a control and treatment pair, or an A and B pair when left is not empty.
The diff the interventions are expected to produce: attribute changes between the two capsules (static only), differing flags, files and steps, and, when the two containers have different base images, the members an image swap brings along: bundle attributes the image supplies rather than run.sh, and the components it ships (tzdata, CA bundle, shell).
The bundle rule. One non-volatile attribute that is the one the experiment set is BundleVerdict.Isolated; several, or one that is not the target, is BundleVerdict.Bundle with every member listed and the members not yet isolated (all but the target when exactly one attribute was set, else all of them); none is BundleVerdict.Empty. mechanisms maps an attribute to the sentence of a rule or probe for it that agreed; it is used only for the single target.