Stamp a finished experiment directory so config + artifact hashes can be anchored. Simulation stays local.

Prerequisites

pip install -e ".[notary]"

For FarmNotary development, a sibling clone still works: pip install -e ../FarmNotary.

After a run

python scripts/notarize_run.py --run-dir experiments/<name>/results --runner experiment_runner

Writes manifest.json into that directory (via FarmNotary). anchor is dry-run until a chain backend is configured in FarmNotary.

python -m farm_notary.cli verify --run-dir experiments/<name>/results
python -m farm_notary.cli anchor --run-dir experiments/<name>/results

From Python

from farm.provenance.notary import notarize_run_dir

receipt = notarize_run_dir("experiments/demo/results", runner="demo")

The adapter stamps only the official allowlist (trials.csv, summary.csv, allocation_means.csv, contrasts.csv, run_config.json, REPORT.md, figures/*.png). FarmNotary also refuses name fragments ballot, vote, voter, individual_choice, and private.

What must not be in the run dir you stamp

Do not leave voter-level or agent-level choice files next to the official outputs. Prefer writing those under a private/ subfolder; they are never hashed.