Canonical docs
In the research projects
The Python project supplies its own SFD functions and bounded parameter domain. The Compiled project supplies a Manifest-backed SFD and saved definition. Both execute through UEL/MSQ; Compiled Research supplies YAML to the CLI; direct Manifest construction is optional component integration.
What this package owns
Owns Manifest, MLManifest, RuleBasedManifest, the Universal Experiment Loop, parameter-search strategies, mutable search state, reducers, feedback, and checkpointing.
Does not own inference reconstruction (limen.inference), model architectures, indicators, features, or metric helpers.
Key entry points
| Entry point | Use case | Notes |
|---|---|---|
Manifest, MLManifest, RuleBasedManifest, CalibrationConfig |
Declarative experiment pipelines and calibration configuration | Exported at the package root |
UniversalExperimentLoop |
Run an SFD across parameter permutations | Exported at the package root |
GridStrategy, RandomStrategy, STRATEGY_REGISTRY |
Built-in advanced-search strategy surface | Exported at the package root |
ReuseContract, declare_reuse |
Declare deterministic snapshot reuse | See reuse declarations |
Adjacent modules
limen.sfdsupplies the experiment configuration that this package runs.limen.datasupplies raw data when a manifest declares a data source.limen.loganalyzes completed runs.limen.cohortbuilds decoder cohorts on top of finished experiment results.limen.inferenceownsTrainer,Sensor, andReconstructionError; the top-levellimenpackage lazily re-exports those names.
Quick orientation
| Module or family | Responsibility |
|---|---|
experiment_core.py |
UniversalExperimentLoop |
_uel_snapshot.py |
Full captured-object save and restore |
manifest_core.py |
Manifest and builder components |
checkpoint_manager.py |
Persist and restore advanced-run state |
feedback_controller.py |
Mid-run adaptive callbacks |
msq.py |
Mutable Search Queue |
param_domain.py |
Mutable parameter domain |
pruning_strategy.py |
Pruning interfaces and implementations |
param_search/ |
SearchStrategy, GridStrategy, RandomStrategy |
experiment/├── README.md├── __init__.py├── _acceptance_settings.py├── _allocation.py├── _allocation_folds.py├── _backtest_provenance.py├── _boolean_controls.py├── _column_shims.py├── _dynamic_barriers.py├── _exit_rules.py├── _factorize.py├── _factorized_admission.py├── _factorized_contract.py├── _factorized_key.py├── _factorized_native.py├── _factorized_prep.py├── _factorized_projection.py├── _factorized_replay.py├── _family_evidence.py├── _filter_resume.py├── _fixed_trade_sources.py├── _fold_evidence.py├── _fold_fingerprint.py├── _fold_partitions.py├── _fold_preparation.py├── _grid_resume.py├── _holdout_assessment.py├── _holdout_attempts.py├── _holdout_checkpoint.py├── _holdout_composition.py├── _holdout_events.py├── _holdout_folds.py├── _holdout_freeze.py├── _holdout_history.py├── _holdout_report.py├── _holdout_research.py├── _holdout_source.py├── _holdout_sources.py├── _manifest_preparation.py├── _objective.py├── _objective_optimizer.py├── _objective_run.py├── _parallel_commit.py├── _parallel_resume.py├── _parallel_rounds.py├── _parallel_sources.py├── _parallel_worker.py├── _prepare_backtest_data.py├── _prepare_trade_context.py├── _recording.py├── _required_columns.py├── _resolve_backtest_config.py├── _resolve_trade_policy.py├── _result_fields.py├── _round_errors.py├── _round_signals.py├── _round_storage.py├── _serial_resume.py├── _shim_fractional_diff.py├── _source_contract.py├── _target_identity.py├── _uel_snapshot.py├── _validation_calibration.py├── _validation_decisions.py├── _walk_forward_run.py├── _walk_forward_split.py├── acceptance_report.py├── checkpoint_manager.py├── convergence_report.py├── errors.py├── experiment_core.py├── family_acceptance_report.py├── feedback_controller.py├── holdout.py├── manifest_core.py├── msq.py├── param_domain.py├── param_search/└── reducer/Things to know
- CLI and Python/MSQ runs share UEL with
SearchStrategy,ParamDomain, and MSQ; checkpoints and feedback are optional. - The ordinary MSQ path prepares every candidate. Omitting
search_strategyretains the legacy execution contract, includingParamSpaceand the manifest requirement forprep_each_round=True. - When
experiment_diris set on the MSQ path, Limen writes results and round data there; checkpoints and audit entries appear when their configured triggers run. - Results are appended incrementally during a run, so experiment files should be treated as durable artifacts rather than temporary output.
Read next
Checkpoint protection evidence
Project-bound research checkpoints retain an explicit version-1 protection header in both checkpoint.json and metadata.json, including a null cutoff when no reservation is active. Their saved population retains source evidence, ordered terminal occurrences, and the completed rounds' original source, selection, split, schema, and SQL-history witnesses. Supported protected research includes independently valid resume, factorization, native parallel workers, and walk-forward. Restoration validates genuine project history and the original mode requirements before restoring state or rewriting artifacts. The guarded holdout reference defines the research support and narrower final-assessment eligibility.
Trainer requires genuine completed protected experiment lineage before fitting. Valid earlier version-1 protected selections do not need a retroactive checkpoint header. For a legacy Python manifest whose actual local source differs from its saved YAML, SQL-validated source evidence supplies the local-source declaration for reconstruction; the reloaded admitted data and split geometry must still match exactly. The derived Sensor reference reflects that source without rewriting the saved experiment artifacts.