CausaLab is the anonymized release repository for the Reactor Lab causal discovery benchmark and the experiments used in the NeurIPS 2026 Evaluation and Datasets submission.
This repository contains:
- the Reactor Lab environment implementation under
discoveryworld/; - ReAct/Recoma agents and prompts under
agents/recoma/; - local non-Slurm experiment entrypoints under
scripts/experiments/; - restored ReEval code under
causal_game_paper/re_eval/; - visualization code under
scripts/vis_backend/andscripts/vis_frontend/; - paper figure/table data under
causal_game_paper/new_paper/; - the anonymized graph dataset release under
release/causalab_neurips2026_dataset/.
For reviewer-facing reproduction instructions, start with
REPRODUCIBILITY.md.
conda create -n causalab python=3.10 -y
conda activate causalab
python -m pip install --upgrade pip
python -m pip install --use-pep517 -r agents/requirements.txt
python -m pip install -e .Run the local smoke checks:
python -m unittest discoveryworld.tests.test_property_manipulator_oracle
python scripts/experiments/validate_release_artifacts.pyRun a no-Slurm dry run for one experiment script:
SKIP_CONDA_ACTIVATE=1 DRY_RUN=1 GRAPH_LIMIT=1 \
bash scripts/experiments/run_react_simple-mem_freqparent_4nodes_main.shReEval can be run without an API call on the bundled sample trajectory:
python -m causal_game_paper.re_eval.run_lightweight_reeval \
--source-only \
--limit 1 \
--output-dir output_dir/re_eval_sample_source_only \
examples/sample_runs/react_simple-memFor API-backed ReEval, export an OpenAI-compatible key and optionally a custom base URL:
export OPENAI_API_KEY=...
export OPENAI_API_BASE=https://api.openai.com/v1
python -m causal_game_paper.re_eval.run_lightweight_reeval \
--limit 1 \
--output-dir output_dir/re_eval_sample_api \
examples/sample_runs/react_simple-mempython scripts/vis_backend/visualization_server.pyThen open http://127.0.0.1:5001. The backend serves the frontend from
scripts/vis_frontend/ and defaults to the bundled sample trajectory in
examples/sample_runs. If you did not install the full CausaLab environment,
install the visualization-only dependencies first:
python -m pip install -r scripts/vis_backend/requirements.txtUseful checks:
bash scripts/vis_backend/check_deployment_ready.sh
python scripts/vis_backend/visualize_causal_graphs_dsl.py \
--tracking_file examples/sample_runs/react_simple-mem/obs_Causal_gpt-5-mini/4nodes/20260223-2134_dsl_right/4nodes_0_53calls/seed_1/*_tracking_simple.jsonl \
--config_file examples/sample_runs/react_simple-mem/obs_Causal_gpt-5-mini/4nodes/20260223-2134_dsl_right/4nodes_0_53calls/seed_1/graph_config.json \
--output_file output_dir/visualization_sample.jsonTo inspect a newly generated run, point the backend at its experiment output root:
BASE_OUTPUT_DIR=output_dir/react_simple-mem/obs_Causal_gpt-5-mini/4nodes/... \
python scripts/vis_backend/visualization_server.pyThe expected HTTP smoke path is:
GET /api/config;GET /api/folders;POST /api/visualizewith the selected folder'stracking_fileandconfig_file.