From 0026e9c9764b9aae620c02e2b6c95b822dea0171 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iwo=20Strzebo=C5=84ski?= Date: Sat, 3 Oct 2026 10:10:39 +0000 Subject: [PATCH] Declare proprietary licensing and enforce permissive-only dependencies Continuum is intended to be sold, so every dependency has to permit distribution in closed-source commercial software. This crate carried `license = "UNLICENSED"`, which is not valid SPDX and made `cargo deny` fail outright; `LicenseRef-Proprietary` with `publish = false` is what marks it first-party instead. The note in deny.toml matters more than the allow list here: the ONNX model weights this worker will load are licensed independently of the `ort` crate, and `cargo deny` cannot see them at all. Ultralytics YOLO and Obico's print-failure model are both AGPL-3.0 and cannot ship in a commercial product - see continuum-common's docs/LICENSES.md, and pick a permissive architecture before collecting training data rather than retraining because of a licence. Co-Authored-By: Claude Opus 5 --- Cargo.toml | 5 ++++- deny.toml | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 deny.toml diff --git a/Cargo.toml b/Cargo.toml index fe98fb8..b549d4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,10 @@ name = "continuum-ai-worker" version = "0.1.0" edition = "2021" description = "Continuum AI worker - consumes camera frame batches from Redis Streams and runs print-failure detection" -license = "UNLICENSED" +# Proprietary: deliberately not an SPDX id, so cargo-deny treats it as +# first-party. See docs/LICENSES.md in continuum-common. +license = "LicenseRef-Proprietary" +publish = false [[bin]] name = "continuum-ai-worker" diff --git a/deny.toml b/deny.toml new file mode 100644 index 0000000..5563b7b --- /dev/null +++ b/deny.toml @@ -0,0 +1,41 @@ +# Licence policy for a closed-source commercial product. +# See docs/LICENSES.md in continuum-common for the rationale and the +# non-cargo dependencies (external binaries, ML models) this file cannot see. +# +# Run: cargo deny check licenses + +[licenses] +# Permissive only. Anything copyleft reaching a shipped binary would make +# the product undistributable without releasing our source. +allow = [ + "MIT", + "Apache-2.0", + "Apache-2.0 WITH LLVM-exception", + "BSD-2-Clause", + "BSD-3-Clause", + "ISC", + "Zlib", + "Unicode-3.0", + "Unlicense", + "MPL-2.0", + "CC0-1.0", + "BlueOak-1.0.0", +] +confidence-threshold = 0.9 + +# Our own crates declare `LicenseRef-Proprietary`, which is deliberately not +# an SPDX identifier and must never appear in the allow list above - a +# third-party crate claiming it would be a real finding. They are recognised +# as first-party by `publish = false` in their manifests. +private = { ignore = true } + +[bans] +deny = [] + +[advisories] +yanked = "deny" + +# NOT VISIBLE TO THIS FILE: the ONNX model weights loaded at runtime carry +# their own licence, independent of the `ort` crate (MIT). Ultralytics YOLO +# and Obico's print-failure models are AGPL-3.0 and cannot ship in a +# commercial product. See docs/LICENSES.md.