refactor: enforce layered crates and Rust audit gates
This commit is contained in:
@@ -0,0 +1,278 @@
|
||||
# Machine-readable dependency and layer policy.
|
||||
policy_version = 1
|
||||
|
||||
[layers]
|
||||
"contract/can" = 0
|
||||
"contract/imu" = 0
|
||||
"protocol/imu" = 1
|
||||
"protocol/motor" = 1
|
||||
"protocol/remote" = 1
|
||||
"transport/can" = 2
|
||||
"transport/serial" = 2
|
||||
"device/imu" = 3
|
||||
"device/motor" = 3
|
||||
"device/remote" = 3
|
||||
"control/algorithm" = 4
|
||||
"control/chassis" = 4
|
||||
"device/esc" = 4
|
||||
"experiment/trace" = 5
|
||||
"control/motor" = 6
|
||||
"model/motor" = 7
|
||||
"simulation/motor" = 8
|
||||
"tooling/tuning" = 9
|
||||
"config/chassis" = 10
|
||||
"application/bench" = 11
|
||||
"application/daemon" = 12
|
||||
"application/tools" = 13
|
||||
"application/tuning" = 13
|
||||
"verification/integration" = 14
|
||||
|
||||
[forbidden.normal]
|
||||
esc_bus = ["motor-control", "pid"]
|
||||
bench = ["tuning"]
|
||||
sim_harness = ["tuning"]
|
||||
|
||||
[trait_boundaries]
|
||||
protocol_motor = ["MotorProtocol", "EffortScale", "FeedbackFields"]
|
||||
device_motor = ["MotorSpec", "MotorFeedback", "EffortDrive", "VelocityDrive", "PositionDrive", "Disable"]
|
||||
model_motor = ["MotorPlant", "DcModelSpec", "VoltageModelSpec"]
|
||||
esc_bus_forbidden_symbols = ["MotorKind", "EscModel"]
|
||||
|
||||
[packages."bench"]
|
||||
path = "crates/application/bench"
|
||||
layer = "application/bench"
|
||||
rank = 11
|
||||
normal = ["can", "esc-bus", "experiment", "motor", "motor-control", "slcan", "socketcan"]
|
||||
dev = []
|
||||
external = ["anyhow", "thiserror", "tokio", "tracing"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."can"]
|
||||
path = "crates/contract/can"
|
||||
layer = "contract/can"
|
||||
rank = 0
|
||||
normal = []
|
||||
dev = []
|
||||
external = ["tokio"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."chassis-config"]
|
||||
path = "crates/config/chassis"
|
||||
layer = "config/chassis"
|
||||
rank = 10
|
||||
normal = ["esc-bus", "mecanum", "motor", "motor-control", "motor-protocol"]
|
||||
dev = []
|
||||
external = ["serde", "thiserror", "toml"]
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."chassis-tune"]
|
||||
path = "crates/application/tuning"
|
||||
layer = "application/tuning"
|
||||
rank = 13
|
||||
normal = ["bench", "can", "chassis-config", "esc-bus", "experiment", "motor", "motor-control", "motor-model", "motor-protocol", "sim-harness", "slcan", "socketcan", "tuning"]
|
||||
dev = []
|
||||
external = ["anyhow", "argmin", "argmin-math", "clap", "csv", "indicatif", "plotters", "rand", "rayon", "serde", "serde_json", "thiserror", "tokio", "toml", "tracing", "tracing-subscriber"]
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."chassisd"]
|
||||
path = "crates/application/daemon"
|
||||
layer = "application/daemon"
|
||||
rank = 12
|
||||
normal = ["can", "chassis-config", "dr16", "dr16-protocol", "esc-bus", "mecanum", "motor", "motor-control", "sim-harness", "socketcan"]
|
||||
dev = []
|
||||
external = ["clap", "tokio", "tracing", "tracing-subscriber"]
|
||||
dev_external = ["approx", "tokio"]
|
||||
|
||||
[packages."delta10"]
|
||||
path = "crates/device/imu"
|
||||
layer = "device/imu"
|
||||
rank = 3
|
||||
normal = ["can", "delta10-protocol", "imu"]
|
||||
dev = []
|
||||
external = ["thiserror", "tokio"]
|
||||
dev_external = []
|
||||
|
||||
[packages."delta10-protocol"]
|
||||
path = "crates/protocol/imu"
|
||||
layer = "protocol/imu"
|
||||
rank = 1
|
||||
normal = ["can", "imu"]
|
||||
dev = []
|
||||
external = ["thiserror"]
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."dr16"]
|
||||
path = "crates/device/remote"
|
||||
layer = "device/remote"
|
||||
rank = 3
|
||||
normal = ["dr16-protocol"]
|
||||
dev = []
|
||||
external = ["serial", "tokio", "tracing"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."dr16-protocol"]
|
||||
path = "crates/protocol/remote"
|
||||
layer = "protocol/remote"
|
||||
rank = 1
|
||||
normal = []
|
||||
dev = []
|
||||
external = ["thiserror"]
|
||||
dev_external = ["proptest"]
|
||||
|
||||
[packages."esc-bus"]
|
||||
path = "crates/device/esc"
|
||||
layer = "device/esc"
|
||||
rank = 4
|
||||
normal = ["can", "motor", "motor-protocol"]
|
||||
dev = []
|
||||
external = ["thiserror", "tokio", "tracing"]
|
||||
dev_external = ["approx", "tokio"]
|
||||
|
||||
[packages."experiment"]
|
||||
path = "crates/experiment/trace"
|
||||
layer = "experiment/trace"
|
||||
rank = 5
|
||||
normal = []
|
||||
dev = []
|
||||
external = []
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."imu"]
|
||||
path = "crates/contract/imu"
|
||||
layer = "contract/imu"
|
||||
rank = 0
|
||||
normal = []
|
||||
dev = []
|
||||
external = []
|
||||
dev_external = []
|
||||
|
||||
[packages."integration-tests"]
|
||||
path = "crates/verification/integration"
|
||||
layer = "verification/integration"
|
||||
rank = 14
|
||||
normal = ["can", "esc-bus", "experiment", "motor", "motor-control", "motor-model", "motor-protocol", "sim-harness", "socketcan"]
|
||||
dev = []
|
||||
external = ["tokio"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."mecanum"]
|
||||
path = "crates/control/chassis"
|
||||
layer = "control/chassis"
|
||||
rank = 4
|
||||
normal = []
|
||||
dev = []
|
||||
external = []
|
||||
dev_external = ["approx", "proptest"]
|
||||
|
||||
[packages."motor"]
|
||||
path = "crates/device/motor"
|
||||
layer = "device/motor"
|
||||
rank = 3
|
||||
normal = ["can", "motor-protocol"]
|
||||
dev = []
|
||||
external = ["thiserror"]
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."motor-control"]
|
||||
path = "crates/control/motor"
|
||||
layer = "control/motor"
|
||||
rank = 6
|
||||
normal = ["motor", "pid"]
|
||||
dev = []
|
||||
external = []
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."motor-model"]
|
||||
path = "crates/model/motor"
|
||||
layer = "model/motor"
|
||||
rank = 7
|
||||
normal = ["motor-protocol"]
|
||||
dev = []
|
||||
external = []
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."motor-protocol"]
|
||||
path = "crates/protocol/motor"
|
||||
layer = "protocol/motor"
|
||||
rank = 1
|
||||
normal = ["can"]
|
||||
dev = []
|
||||
external = ["thiserror"]
|
||||
dev_external = ["approx", "proptest"]
|
||||
|
||||
[packages."pid"]
|
||||
path = "crates/control/algorithm"
|
||||
layer = "control/algorithm"
|
||||
rank = 4
|
||||
normal = []
|
||||
dev = []
|
||||
external = []
|
||||
dev_external = ["approx"]
|
||||
|
||||
[packages."sim-harness"]
|
||||
path = "crates/simulation/motor"
|
||||
layer = "simulation/motor"
|
||||
rank = 8
|
||||
normal = ["can", "experiment", "motor", "motor-control", "motor-model", "motor-protocol"]
|
||||
dev = []
|
||||
external = ["rand", "thiserror", "tokio", "tracing"]
|
||||
dev_external = ["approx", "tokio"]
|
||||
|
||||
[packages."slcan"]
|
||||
path = "crates/transport/serial"
|
||||
layer = "transport/serial"
|
||||
rank = 2
|
||||
normal = ["can"]
|
||||
dev = []
|
||||
external = ["serial", "slcan", "thiserror", "tokio", "tracing"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."socketcan"]
|
||||
path = "crates/transport/can"
|
||||
layer = "transport/can"
|
||||
rank = 2
|
||||
normal = ["can"]
|
||||
dev = []
|
||||
external = ["socketcan", "thiserror", "tokio", "tracing"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."spin"]
|
||||
path = "crates/application/tools"
|
||||
layer = "application/tools"
|
||||
rank = 13
|
||||
normal = ["bench", "dr16", "dr16-protocol", "esc-bus", "experiment", "mecanum", "motor", "motor-control", "slcan", "socketcan"]
|
||||
dev = []
|
||||
external = ["clap", "tokio", "tracing", "tracing-subscriber"]
|
||||
dev_external = ["tokio"]
|
||||
|
||||
[packages."tuning"]
|
||||
path = "crates/tooling/tuning"
|
||||
layer = "tooling/tuning"
|
||||
rank = 9
|
||||
normal = ["experiment", "motor-control", "motor-model", "motor-protocol", "pid", "sim-harness"]
|
||||
dev = []
|
||||
external = ["argmin", "argmin-math", "indicatif", "rand", "rayon", "serde", "thiserror", "toml", "tracing"]
|
||||
dev_external = ["approx", "proptest"]
|
||||
|
||||
[external_roles]
|
||||
tokio = ["contract", "transport", "device", "simulation", "tooling", "application", "verification"]
|
||||
socketcan = ["transport", "device", "application", "verification"]
|
||||
slcan = ["transport", "device", "application", "verification"]
|
||||
serial = ["transport", "device", "application", "verification"]
|
||||
thiserror = ["protocol", "transport", "device", "control", "model", "experiment", "simulation", "tooling", "config", "application", "verification"]
|
||||
tracing = ["transport", "device", "simulation", "tooling", "application", "verification"]
|
||||
tracing-subscriber = ["application", "verification"]
|
||||
serde = ["config", "tooling", "application", "verification"]
|
||||
toml = ["config", "tooling", "application", "verification"]
|
||||
clap = ["application", "verification"]
|
||||
argmin = ["tooling", "application", "verification"]
|
||||
argmin-math = ["tooling", "application", "verification"]
|
||||
rand = ["simulation", "tooling", "application", "verification"]
|
||||
rayon = ["tooling", "application", "verification"]
|
||||
csv = ["tooling", "application", "verification"]
|
||||
serde_json = ["tooling", "application", "verification"]
|
||||
indicatif = ["tooling", "application", "verification"]
|
||||
plotters = ["tooling", "application", "verification"]
|
||||
anyhow = ["tooling", "application", "verification"]
|
||||
approx = ["protocol", "transport", "device", "control", "model", "experiment", "simulation", "tooling", "config", "application", "verification"]
|
||||
proptest = ["protocol", "transport", "device", "control", "model", "experiment", "simulation", "tooling", "config", "application", "verification"]
|
||||
Reference in New Issue
Block a user