# 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"]