diff --git a/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java b/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java
index d6dfb82..a8f7086 100644
--- a/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java
+++ b/bridged/src/main/java/dev/ltms/bridged/config/BridgedConfig.java
@@ -562,7 +562,15 @@ public record BridgedConfig(
tabLabel = (tabLabel == null || tabLabel.isBlank()) ? DEFAULT_TAB_LABEL : tabLabel;
}
- /** Convenience constructor for code that does not configure launch charters. */
+ /**
+ * A fleet with no configured launch charters — the shape every deployment had before
+ * CB-566, and what most tests want.
+ *
+ *
Kept deliberately, even though an overload that drops a new field is normally the
+ * shape to avoid. It is safe here because nothing reads a charter through a
+ * constructor: the launcher reads {@code fleet.charters()} from the live config. Jackson
+ * binds the canonical constructor, so this one cannot swallow an operator's YAML.
+ */
public Fleet(Map leaders, Map architects,
Map developers, Map reviewers, String tabLabel) {
this(leaders, architects, developers, reviewers, null, tabLabel);
@@ -1217,7 +1225,7 @@ public record BridgedConfig(
if (fleet == null || fleet.charters().isEmpty()) {
return;
}
- List valid = java.util.Arrays.stream(MemberRole.values())
+ List valid = Arrays.stream(MemberRole.values())
.map(MemberRole::wireName)
.toList();
List bad = new ArrayList<>();
diff --git a/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java b/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java
index ccce915..6393994 100644
--- a/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java
+++ b/bridged/src/main/java/dev/ltms/bridged/config/ConfigRef.java
@@ -28,9 +28,9 @@ import java.util.function.Supplier;
*
* - Hot — re-read per use, so a reload takes effect on the next spawn:
* {@code fleet:} (every role pool, {@code charters}, and {@code tabLabel}),
- * {@code placement:}, and an existing profile's {@code weight} / {@code maxLoad}. Those three are read through a supplier on
- * {@code CompositePeerLauncher}, which is what makes them hot — not the fact that they are
- * config.
+ * {@code placement:}, and an existing profile's {@code weight} / {@code maxLoad}. Those
+ * three are read through a supplier on {@code CompositePeerLauncher}, which is what makes
+ * them hot — not the fact that they are config.
* - Deferred — accepted into the new snapshot, but the wiring built at startup
* keeps the old value until a restart: {@code lifecycle:}, {@code leadHeartbeat:},
* {@code spawnReadyTimeoutMs} / {@code spawnReadyPollMs}, {@code guard:},