Troubleshooting
If your problem is not listed, ask on Zulip or report a bug.
Recording
Commit and push source changes before cargo proofs run
The working tree has uncommitted changes or untracked files. Commit them, including Cargo.lock, and push; remove or ignore files that are not inputs.
Push the source commit before cargo proofs run
The current commit is not on the source remote. Push it. To use a remote other
than origin, set remote under [git] in proofs.toml.
Source remote must be a GitHub repository
Only GitHub remotes are supported, so that readers can follow source links and reproduce the run.
No #[kani::proof_for_contract] harnesses found in the selected library/configuration
Only contract harnesses are published. If you see
Note: N ordinary #[kani::proof] harness(es) are not publication targets., see
Record with Kani. Also check that the
features and target after -- enable your harnesses.
No regular Kani check results found; quiet/terse output cannot be published
Run Kani with its regular serial output. Quiet, terse, and parallel output are rejected.
Cannot resolve … in harness … or Ambiguous contract target …
Discovery could not map the harness target to exactly one function. Glob imports, macro-generated functions, and ambiguous reexports are not resolved. Name the target by an explicit path.
No publishable contracts found
Discovery found no API to publish for the selected tool configuration. For
Creusot with target = "annotated", check that public functions carry
requires or ensures; see Record with Creusot.
Publishing
… version … is not registered/selectable on this server; request it before publishing
The tool version in proofs.toml is not registered.
Request it,
or use a registered version listed on Tools.
crate_version_not_found
proofs.rs could not import the crate version's API catalogue from crates.io and docs.rs. Check that this exact version is published on crates.io and that its docs.rs build succeeded. Unreleased versions cannot be published.
An API is missing or matches several public APIs
The service's public API catalogue is authoritative. Private functions, and functions without a public path, cannot be Claims.
Accept current terms in the browser, then run login again
The Terms have changed since you last signed in. Accept them in the browser,
then run cargo proofs login again.
Server report changed since the last CLI publication
See Conflicts.
No recorded run
Record a successful run with cargo proofs run first. preview and publish
do not run verification.
Preview
Unknown preview command
Your CLI is older than the preview feature. Update it with
cargo install cargo-proofs --locked.
Port in use
Stop the earlier preview server, or omit --port to pick a free port.
Changes are missing after updating the CLI
Stop and restart preview. Reloading the browser refreshes report data, not the UI bundle.
Frequently asked questions
I verified a fork or a patched copy. Can I publish it?
Yes, if the crate name and version match a crates.io release. The CLI does not
check that your source matches the release, so explain the differences under
limitations. See Write a useful report.
My crate version is not on crates.io yet.
Publish the release first. A Report targets a crates.io version.
I only have ordinary #[kani::proof] harnesses.
Express the property as a function contract and check it with a
#[kani::proof_for_contract] harness. See Record with Kani.
My crate is in a workspace.
Pass -p NAME or --manifest-path PATH to init, run, preview, and
publish; login does not take them. A virtual workspace
with several packages requires -p.