Artifact Layout Contract
Purpose
Defines canonical on-disk outputs for local runs and indexing inputs.
Local Run Root
LeniaCLI local --output <root> creates:
<root>/<run_id>/config.json<root>/<run_id>/search.json<root>/<run_id>/results.jsonl<root>/<run_id>/summary.json<root>/<run_id>/top.json(only when at least one passing result exists)<root>/<run_id>/frames/(optional)<root>/<run_id>/frames_color/(optional)<root>/<run_id>/render/rank_XXX_seed_YYY/creature.gif(optional render command output)<root>/<run_id>/render/rank_XXX_seed_YYY/video.mp4(optional render command output)<root>/<run_id>/render/rank_XXX_seed_YYY/frames/frame_XXXXXX.png(optional per-frame render output)<root>/<run_id>/library/index.jsonl(optional when collection enabled)
Logs and Metrics
Log base resolution:
- explicit
--log-dirwhen provided, - otherwise
<output>/logswhen--outputis set, - otherwise local
./logs.
Run logs then live under <log_base>/<run_id>/.
Indexing Inputs
Indexer ingests run artifacts and may also ingest activity summaries when present.
Expected ingestable sources include:
- run-level
results.jsonl, - library index entries,
- export index entries,
- activity summary JSONL files.
Invariants
- Every run has a unique
run_idnamespace in artifact paths. - Copied config/search files inside run dir are the provenance snapshot used for reruns.
- Reindexing the same artifact set must be idempotent at row level (upsert semantics).