limen.yaml
Parse, validate, compile, store, and profile declarative YAML experiment manifests.
Canonical docs
What this package owns
Owns the declarative manifest surface behind the preferred CLI path: YAML schema constants, parsing, validation, object resolution, manifest compilation, profiling, and committed-manifest lookup. Does not own Click command routing, UEL execution, model implementations, or feature/target business logic.
Key entry points
Package-root exports are grouped by responsibility:
| Surface | Public exports |
|---|---|
| Parse, validate, resolve | parse, validate, ValidationResult, resolve |
| Compile | CompiledSFD, build_manifest, build_search_strategy |
| Profile | profile, ProfileResult, make_covering_array |
| Schema | VERSION |
| Project and store | find_project_root, get_store_path, read_limen_toml, resolve_manifest_uri |
| Errors | YAMLError, ValidationError, ResolutionError, GitError |
The package also owns parser.py, schema.py, validator.py, resolver.py, compiler.py, profiler.py, store.py, and the shipped templates/ directory behind those exports.
Adjacent modules
limen.cliexposes this package through shell commands.limen.experiment.manifest_coreis the Python object model that compiled YAML targets.limen.sfd.foundational_sfdmirrors YAML templates as packaged SFDs.
Quick orientation
yaml/
|-- parser.py # YAML text to Python data
|-- schema.py # version, modes, manifest types, and allowed values
|-- rules.py # validation rule implementations
|-- validator.py # validation orchestration and result objects
|-- resolver.py # limen.* dotted-reference resolution
|-- compiler.py # YAML config to executable manifest-backed SFD
|-- profiler.py # parameter-space profiling
|-- store.py # committed manifest store and URI resolution
|-- config.py # project-root and limen.toml helpers
`-- templates/ # bundled starter YAML manifests
Things to know
schema_versionis currently1.0.- YAML manifests are the canonical operator-facing experiment definition; Python builders are the extension-equivalent surface.
- YAML validation rejects
sfd.manifest.test_data_source; runtime date limits come fromsplit_dates. - The resolver only treats
limen.*references as supported dotted references. - Store functions back
limen commit,limen ls, and committed-manifest URI runs.