A single Dockerfile at the repo root produces a clean
falsify-demo image. Zero local Python setup; anyone can run the
full demo with two commands.
docker build -t falsify-demo .
docker run --rm -it falsify-demoThe default command runs ./demo.sh with DEMO_AUTO=1. You see
the full PASS → tamper → FAIL → guard-block story in about 15
seconds.
docker run --rm -it falsify-demo bashOnce inside, any falsify command works:
falsify stats
falsify stats --html > /tmp/d.html
falsify doctorIf you want to falsify claims in your own codebase, mount it:
docker run --rm -it -v "$(pwd):/work" -w /work falsify-demo bash
# inside the container:
falsify init my_claim
# edit .falsify/my_claim/spec.yaml, then:
falsify lock my_claim
falsify run my_claim
falsify verdict my_claimApproximately 150–180 MB: the python:3.12-slim base, git
(needed for the commit-msg hook and the build-time git init),
pyyaml, and the installed falsify entry point.
The image pins the Python base to 3.12-slim and installs from
pyproject.toml. Between two builds on the same day you should
get identical behavior. The image is not bit-reproducible — Docker
base layers and apt mirror contents can shift — but it is
behaviorally reproducible against the same commit of this repo.
Pending push to Docker Hub or GHCR. Tracked under 0.2.0 in ROADMAP.md.