Crucible evaluates claims, measurements, and verdicts with recheckable evidence packets. It is built for humans and agents that need to know why a conclusion held, drifted, or became unverifiable.
python -m pip install crucible-benchFrom a source checkout:
python -m pip install -e ".[dev]"crucible status --json
crucible doctor --json
crucible demo --json
crucible --helpThe same package can be exercised from source with:
python -m crucible --helpUse crucible mcp when a host needs the measurement and verdict tools over
stdio.
crucible mcppython -m pytest
python examples/demo.pyFor public/developer delivery checks:
python -m public_surface_sweeper . --workspace --jsonCreate a replay template from a witnessed assessment, let the named oracle fill its measurement rows, and submit the completed pack against the same registry:
crucible recheck REGISTRY --template replay-template.json
crucible recheck REGISTRY --pack replay-pack.json --jsonThe template output schema is crucible.replay-template/1; an external replay
producer emits crucible.replay-pack/1. If a pack has a schema field, it must
be exactly that value; schema-less legacy packs remain accepted, while template
or unknown schemas are rejected.
Each new template includes a privacy-bounded replay_binding with schema
crucible.replay-set/1, descriptor and skipped counts, and a SHA-256 digest.
To recompute it, form one exact {recheck, expected_measurement} object per
descriptor-bearing replay, serialize each with compact sorted-key JSON
(ensure_ascii=False, separators=(',', ':')), sort by those serialized forms,
serialize the resulting list with the same settings, and hash its UTF-8 bytes.
Descriptorless rows and their evidence are never included; the top-level
assessment triple binds the full sealed assessment, which Crucible independently
verifies.
Keep the template's top-level assessment object unchanged in the completed
pack. The CLI requires its thesis ID (thesis_id), assessment seal
(assessment_seal), and measurement seal (measurement_seal) to match the
selected assessment; a missing, malformed, or mismatched binding is rejected
before any measurement replay runs. Preserve replay_binding when emitting a
pack; Crucible compares it to the expected canonical value. Older
assessment-bound packs that omit replay_binding remain accepted.
Crucible should expose claim ids, criteria, verdicts, evidence hashes, and redacted references. Do not require raw prompts, private evidence, verifier internals, or full result payloads for interop.