[graph]
targets = []
all-features = true

[advisories]
# cargo-deny >= 0.19 removed `vulnerability` and `notice` config knobs:
# all vulnerability/notice advisories now emit errors unless explicitly ignored.
# `unmaintained`/`unsound` now control which dependencies can fail the check.
unmaintained = "workspace"
yanked = "warn"
unused-ignored-advisory = "warn"
ignore = [
    "RUSTSEC-2025-0141", # bincode — team considers 1.3.3 complete; we use bincode 2.x
    "RUSTSEC-2026-0141", # lettre — only affects Boring TLS backend; we use rustls
]

[licenses]
# The allow-list below is a deliberately curated, forward-looking policy. Some
# entries (e.g. OpenSSL for `ring`, Unicode-DFS-2016) are kept so dependency
# bumps don't trip the check; `allow` silences the pedantic "not encountered"
# notice for those without weakening the policy itself.
unused-allowed-license = "allow"
allow = [
    "MIT",
    "Apache-2.0",
    "Apache-2.0 WITH LLVM-exception",
    "BSD-2-Clause",
    "BSD-3-Clause",
    "0BSD",
    "ISC",
    "Unicode-3.0",
    "Unicode-DFS-2016",
    "Zlib",
    "Unlicense",
    "MPL-2.0",
    "BSL-1.0",
    "CC0-1.0",
    "CDLA-Permissive-2.0",
    "OpenSSL",
    "bzip2-1.0.6",
    "WTFPL",
]
confidence-threshold = 0.8

[[licenses.clarify]]
name = "ring"
expression = "MIT AND ISC AND OpenSSL"
license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }]

[bans]
multiple-versions = "warn"
wildcards = "allow"

[sources]
unknown-registry = "warn"
unknown-git = "warn"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
allow-git = []
