diff --git a/fleetd/src/main/java/dev/ltms/fleet/peer/PeerLauncher.java b/fleetd/src/main/java/dev/ltms/fleet/peer/PeerLauncher.java index 20c8b7c..18f42ca 100644 --- a/fleetd/src/main/java/dev/ltms/fleet/peer/PeerLauncher.java +++ b/fleetd/src/main/java/dev/ltms/fleet/peer/PeerLauncher.java @@ -175,9 +175,16 @@ public interface PeerLauncher { * correct to do so. But it stays correct only as long as that holds: if a launcher ever * routes more than one profile per role, it MUST override this method, or every role * silently resolves to {@link #defaultProfile()} with no error and no log line. {@code - * HerdrPeerLauncher}'s own {@link #spawn(SpawnRequest, PlacementDecision)} javadoc names this - * method and {@link #place} explicitly as "unoverridden here" for exactly this reason — read - * that javadoc before adding role-pool routing to any {@code HerdrPeerLauncher} subclass. + * HerdrPeerLauncher.spawn(SpawnRequest, PlacementDecision)} — the override in {@code + * dev.ltms.fleet.member}, not the declaration below — names this method and {@link #place} + * explicitly as "unoverridden here" for exactly this reason. Read it before adding role-pool + * routing to any {@code HerdrPeerLauncher} subclass. + * + *

Who is forced to read which paragraph, because it is not symmetric. A new class that + * implements this interface directly must write a body for {@link #spawn(SpawnRequest, + * PlacementDecision)}, which is abstract here, so it lands on this javadoc. A subclass of + * {@code HerdrPeerLauncher} does not: that class already implements the method, and the + * subclass inherits the body. So for a subclass this paragraph is advice, not a gate. */ default String defaultProfileFor(MemberRole role) { return defaultProfile();