forked from AbdelStark/ProvableWorldModel
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
77 lines (71 loc) · 3.46 KB
/
Copy pathCargo.toml
File metadata and controls
77 lines (71 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# SPDX-License-Identifier: Apache-2.0
#
# Workspace manifest for ProvableWorldModel.
#
# Pins the shared package metadata (MSRV, edition, license), the workspace-wide
# lint configuration, and the build profiles. Post-pivot (CommitLLM commit-and-
# audit backend) the system is five first-party crates under `crates/`:
# pwm-core, pwm-export, pwm-prover, pwm-verifier, pwm-testkit. The STARK AIR /
# circuits crates and the vendored Stwo prover were removed; see specs.md.
[workspace]
resolver = "2"
members = ["crates/*"]
[workspace.package]
version = "0.1.0"
edition = "2021"
# MSRV for the first-party crates. Post-pivot the workspace builds on stable Rust
# (the nightly-only Stwo substrate was removed), so this is the authoritative
# floor alongside the stable channel pinned in rust-toolchain.toml.
rust-version = "1.85"
license = "Apache-2.0"
repository = "https://github.com/AbdelStark/ProvableWorldModel"
authors = ["ProvableWorldModel contributors"]
# Centralized dependency versions. First-party crates carry a `version` (not just
# a `path`) so the workspace is publishable-ready: `cargo package` requires a
# version requirement on every dependency. The release tooling
# (ci/prepare-release.py) bumps these in lockstep with `workspace.package.version`.
[workspace.dependencies]
pwm-core = { path = "crates/pwm-core", version = "0.1.0" }
pwm-export = { path = "crates/pwm-export", version = "0.1.0" }
pwm-prover = { path = "crates/pwm-prover", version = "0.1.0" }
pwm-verifier = { path = "crates/pwm-verifier", version = "0.1.0" }
# Blake2s commitment / digest / transcript primitive (specs.md §4, §6). no_std;
# the only crypto dependency in the pwm-core trust root (INV-ARCH-01).
blake2 = { version = "0.10", default-features = false }
# Test-only third-party dependencies (used by pwm-testkit and pwm-core dev-deps).
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Shared lints applied to every first-party crate via `[lints] workspace = true`.
# The CI clippy/fmt/header gates (#73) build on this baseline.
[workspace.lints.rust]
unsafe_code = "warn"
unreachable_pub = "warn"
missing_docs = "warn"
rust_2018_idioms = "warn"
[workspace.lints.clippy]
all = "warn"
# A curated, cast-noise-free slice of pedantic/style lints that lock in the
# codebase's existing quality without the churn a blanket `pedantic` would add
# (60+ intentional integer-cast warnings, plus `use_self` flipping ~260 sites that
# already consistently spell out the type name). The lints kept here are concrete
# readability wins (literal separators, no-op closures, `&container` loops,
# `map_or`); the format-arg and trailing-semicolon lints are already clean and are
# pinned purely to prevent regressions.
uninlined_format_args = "warn"
redundant_closure_for_method_calls = "warn"
map_unwrap_or = "warn"
explicit_iter_loop = "warn"
unreadable_literal = "warn"
semicolon_if_nothing_returned = "warn"
# Build profiles. The performance-budget profile is tuned under the perf gate
# (#75); these are conservative defaults appropriate for a prover binary.
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
# Soundness: the verifier recomputes data-dependent ops (matmul, layernorm
# variance, softmax sums) in integer arithmetic. A silent i64 wrap could make a
# wrong recompute match a forged value, so overflow must trap (fail closed) rather
# than wrap, in release as well as debug. The hot path stays integer-only; the cost
# is negligible against Blake2s and the field reductions.
overflow-checks = true