Skip to content

Output layout

Paths.root defaults to the current working directory. Environment overrides can relocate any configured path, including the specification, recorder, database, static, and submission roots.

Default output layout
storage/
  ktane/                              # installed game and mods
  prompts/                            # prompt storage
output/
  logs/
    run_<run-output-name>/            # one file per child process
  observations/                       # temporary Dill observation pickles
  experiment_specs/
    <manifest-stem>/
      <attempt-name>.json
  experiment_recorder_outputs/
    <timestamp>/
      experiment-<attempt>-<player-uuid>.parquet
      span_timings/
        <service>-<pid>.jsonl
  experiments.duckdb
  manual_cache/
    artifacts/<sha256>/
    sources/
  <task>_predictions/
    <provider-model>/
      run_meta.json
      prediction_<index>.json
      metrics.json
  how_do_you/
    <provider-model>.json
  submissions/
    <date>_<display>_<fingerprint8>_<target>_<revision>/

EXPERIMENT_RECORDER_OUTPUTS pins the recorder directory for one run. When it is unset, run creates a timestamped directory under output/experiment_recorder_outputs/. The separate EXPERIMENT_RECORDER option tells completion and database commands where existing records live.

Contract boundaries

  • Experiment specifications, player-record Parquet, static metadata and predictions, DuckDB tables, and submission bundle members have their documented contracts.
  • Observation pickle files, process logs, span-timing JSONL, manual source downloads, and the DuckDB WAL are intermediate or implementation-facing artefacts.
  • Manual artefacts are content-addressed directories containing their own manifest, PDF, text, and page images. Their lifecycle is documented under Manuals.

Do not infer stability from location

A file under output/ is not automatically a supported format. Use the linked format page to determine its compatibility boundary before building another tool around it.