diff --git a/bridged/src/main/java/dev/ltms/bridged/member/CompositePeerLauncher.java b/bridged/src/main/java/dev/ltms/bridged/member/CompositePeerLauncher.java index 3262766..d16686c 100644 --- a/bridged/src/main/java/dev/ltms/bridged/member/CompositePeerLauncher.java +++ b/bridged/src/main/java/dev/ltms/bridged/member/CompositePeerLauncher.java @@ -372,8 +372,11 @@ public final class CompositePeerLauncher implements PeerLauncher { } private void enforceMaxLoad(String profile) { - // Absent config, or a config whose maxLoad normalized to null (non-positive ⇒ unlimited at - // load), means no cap — never cap what wasn't configured. + // Absent config, or a config whose maxLoad normalized to null (ABSENT ⇒ unlimited at load), + // means no cap — never cap what wasn't configured. Note "non-positive ⇒ unlimited" was true + // until CB-585: an explicit `maxLoad: 0` now survives as 0 and is a real cap of zero, so the + // check below refuses every spawn on that profile, and a negative value is refused at config + // load rather than normalized away. BridgedConfig.Profile cfg = profiles0().get(profile); Integer cap = (cfg == null) ? null : cfg.maxLoad(); if (cap == null) {