On-chain run provenance (FarmNotary)
Status: Proposed
Sibling repo: Dooders/FarmNotary
Intent
AgentFarm executes simulations. FarmNotary attests what was published afterward.
The chain stores manifest_hash + CID. It does not run the simulator. Immutability is not correctness; re-execution from a committed seed is still required to test claims.
Official record vs private choice
- Private: individual votes, agent-level ballots, raw choice vectors used only for selection.
- Official (notarized): config, git SHA, aggregate metrics, winner allocations, summary tables.
Filenames containing ballot, vote, voter, individual_choice, or private are skipped by FarmNotary.
Inheritance
AgentFarm depends on FarmNotary as an optional extra, not a git submodule:
pip install -e ".[notary]"
That extra pins FarmNotary v0.1.0. A sibling clone (pip install -e ../FarmNotary) is still valid for local FarmNotary development.
Call site after a runner writes a run directory:
from farm.provenance.notary import notarize_run_dir
receipt = notarize_run_dir(
run_dir,
runner="consensus_paradigms",
config={"trials": 250, "population": "two_cluster"},
)
If farm_notary is not installed, notarize_run_dir writes nothing and returns None.
Layout
| Path | Role |
|---|---|
farm/provenance/notary.py |
Optional adapter |
scripts/notarize_run.py |
CLI over a finished run dir |
| Guide | How to stamp a run |
| Consensus paradigms | First experiment that should use this |