Concepts#

What Is A Study?#

A study is a typed specification of empirical intent: hypotheses, factors, conditions, outcomes, and execution budget. It is the unit that ties method to execution artifacts.

Hypotheses and Outcomes#

Hypotheses define expected effects. Outcomes define what is measured. Analysis plans bind hypotheses and outcomes so interpretation contracts are explicit before execution.

Each relationship has one source of truth. AnalysisPlan.hypothesis_ids binds hypotheses to plans, and OutcomeSpec.primary classifies an outcome. Study.primary_outcomes and Study.secondary_outcomes are derived, read-only views over the outcome definitions. Serialized studies from older releases that contain the former duplicate fields remain loadable when the values agree; contradictory metadata is rejected.

Factors and Levels#

Factors represent manipulated or observed variables. Levels define the concrete values used to materialize run conditions.

Blocks and Replications#

Blocking controls nuisance variation. Replications support stability estimation and reduce sensitivity to one-off stochastic runs.

Admissible Conditions#

Constraints determine which factor combinations are valid. Condition generation is therefore methodological filtering, not just combinatorics.

DOE Builders#

The package includes multiple design builders (for example full factorial, latin hypercube, and fractional two-level forms). The right choice depends on the question, budget, and expected interactions.

Use DesignSpec and DesignKind for Python-authored studies. Mapping payloads remain supported at the YAML/JSON boundary and are normalized to a typed DesignSpec when loaded.

Execution Modes#

Most studies bind agents to problems. Pure simulations can instead pass a ConditionRunner to run_study. The callback receives the deterministic RunSpec and materialized Condition and returns RunOutput. The normal runner still owns failure isolation, checkpointing, resume, progress, and canonical artifact export; standalone studies do not need placeholder problem or agent identifiers.

Artifacts and Manifests#

Canonical exports (study definitions, run tables, event tables, evaluation rows, and manifests) are designed to feed downstream analysis and reporting without ad-hoc schema translation. See Artifact Contract for the file-level guarantees and versioning rules.

The public compatibility promise lives at the file-contract level. Internal checkpoint or cache details are intentionally outside that boundary unless they are promoted into Artifact Contract.

Control-Layer Role#

Problems and Agents are peer study inputs. Experiments owns study design, coordinates their execution, and defines the artifact handoff to Analysis. This control topology describes responsibility, not a linear package ordering; it is where methodological rigor enters the software stack.