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 is the part that earns its keep: `src/go2rtc.rs`
spawns go2rtc from PATH and expects the operator to have installed it, so
we currently distribute nothing. go2rtc shells out to ffmpeg, and ffmpeg
is LGPL-2.1+ only when built without `--enable-gpl` - most prebuilt
binaries are GPL builds because they bundle x264. If we ever ship either
binary, those build flags become our problem.

Policy and full audit: continuum-common's docs/LICENSES.md.
This commit is contained in:
2026-10-03 10:11:05 +00:00
parent 305c41993d
commit f3f6e21012
2 changed files with 49 additions and 1 deletions
+6 -1
View File
@@ -3,7 +3,10 @@ name = "continuum-proxy"
version = "0.1.0" version = "0.1.0"
edition = "2024" edition = "2024"
description = "Continuum edge gateway daemon - runs on-site, bridges printers to the cloud control plane" description = "Continuum edge gateway daemon - runs on-site, bridges printers to the cloud control plane"
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
[lib] [lib]
name = "continuum_proxy" name = "continuum_proxy"
@@ -29,6 +32,8 @@ path = "examples/auto_connect_bambu.rs"
name = "bambu_commands_demo" name = "bambu_commands_demo"
path = "examples/bambu_commands_demo.rs" path = "examples/bambu_commands_demo.rs"
[dependencies] [dependencies]
# Real printer protocol clients (MQTT for Bambu, HTTP for PrusaLink/ # Real printer protocol clients (MQTT for Bambu, HTTP for PrusaLink/
# Moonraker, FTPS for gcode transfer) go here once you're ready to build # Moonraker, FTPS for gcode transfer) go here once you're ready to build
+43
View File
@@ -0,0 +1,43 @@
# 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: src/go2rtc.rs spawns go2rtc as an external
# process found on PATH (go2rtc itself is MIT). go2rtc shells out to ffmpeg
# for transcoding - ffmpeg is LGPL-2.1+ only when built without
# `--enable-gpl`. If we ever ship either binary rather than requiring the
# operator to install it, the build flags become our problem. See
# docs/LICENSES.md.