Quick start¶
You can learn Themis in the hosted workspace. You can also run the full evidence plane on a local machine.
Fastest path: hosted workspace¶
- Open the Themis workspace.
- Choose a scenario template.
- Read the baseline, candidate, dataset, and context fields.
- Select run release gate.
- Wait for the receipt.
- Read the decision and the evidence panels.
The workspace must show the returned API state. It must not show a decision before the run returns a receipt.
Try all three checked-in stories:
| Scenario | Expected decision | Reason |
|---|---|---|
| Promote | PROMOTE |
The candidate matches the independent oracle and required evidence passes. |
| Quarantine | QUARANTINE |
The candidate uses a deprecated field. |
| Review | REVIEW |
DataHub is deliberately unavailable in the ablation run. |
Full local path¶
Run these commands from the Themis project folder.
1. Install the project¶
python3 -m venv .venv
.venv/bin/python -m pip install -e ".[dev,bootstrap]"
cp .env.example .env
Keep .env private. The repository ignores it.
2. Start DataHub and load the fixture metadata¶
./scripts/bootstrap.sh
DATAHUB_GMS_URL=http://localhost:8080 \
.venv/bin/python scripts/bootstrap_datahub.py
The bootstrap creates fixture metadata. The runner reads the metadata through the MCP boundary. It does not treat the bootstrap script as evidence.
3. Start OpenTelemetry and download the approved dataset¶
docker compose up -d
./scripts/download_nyc_taxi.sh
The local Jaeger UI is available at http://localhost:16686. The dataset is
downloaded into an ignored cache.
4. Run the decision matrix¶
# Expected: QUARANTINE
.venv/bin/themis run --manifest data/releases/quarantine.yaml
# Expected: PROMOTE
.venv/bin/themis run --manifest data/releases/promote.yaml
# Expected: REVIEW
.venv/bin/themis run --manifest data/releases/review.yaml --ablation
The exit code is part of the contract. A successful PROMOTE run exits 0.
The expected negative decisions use the documented non-zero result.
5. Start the local console¶
.venv/bin/themis serve --host 127.0.0.1 --port 8787
Open http://127.0.0.1:8787/workspace.
What counts as proof¶
A fresh receipt should include the release ID, decision, dataset identity, selected cases, passed cases, DataHub state, trace IDs, and write-back state. Historical sample receipts are examples. They are not current runtime proof.
Do not skip the independent oracle
A model can produce valid SQL that answers the wrong question. The oracle is a separate calculation. Themis compares the two results.