Ingest
Feeds results someone else produced (a CI workflow variant, a run on another host) into a case through the same decision rule and belief update as solve. A result is accepted only when it names a preregistered experiment, the sha256 of that experiment's rule and both arm ids, and its trial counts equal the preregistered count; the rule is derived from the case's plan, never from the result. An ingested result can narrow the case, never confirm it: confirmation needs the minimal-set search and the reverse arm, which are separate preregistered experiments.
Functions
The preregistered rule of a plan, or null when no trial count reaches alpha.
One result file per experiment of the case that has no result yet and is not rejected, with the ids and the preregistered rule hash filled in; failures is null until its counts are entered, so an untouched file is refused rather than ingested as zero failures.