CB-597: fix bridged.example.yaml inaccuracies (everything else was already documented) #92

Merged
ltms merged 1 commits from worker/cb597-282224-15 into main 2026-08-16 17:59:41 +02:00
Member

Audited bridged.example.yaml against BridgedConfig.KNOWN_TOP_LEVEL_KEYS. Every top-level key the daemon reads (bind, herdrSocket, profiles, guard, worktreeRoot, lifecycle, spawnReadyTimeoutMs, spawnReadyPollMs, broker, primary, fleet, leadHeartbeat, health, placement, auth, configReload, quarantineCooldownSeconds) turned out to already be present in the example, including fleet.leaders/architects/developers/reviewers and broker: with the LavinMQ note and absent-behaviour statement -- prior tickets (CB-573, CB-566, CB-559, CB-579, CB-527/528) each kept the example in step with their feature.

What this PR actually fixes -- inaccuracies found while tracing every field through the parser and its consumers:

  • health.workingSuspectAfterSeconds / paneProbeIntervalSeconds claimed enforced minimums (300 / 60) that do not exist in code -- only intervalSeconds is clamped (floor 15 via Math.max). The other two are parsed into the Health record but never read by anything downstream (FleetHealthMonitor only consumes intervalSeconds). Comment corrected to say so plainly instead of documenting a lie.
  • notifications.mode: webhook was undocumented as only flipping the healthCoverage string bridge_list reports ("full" vs "detection-only") -- no webhook call is ever sent; there is no delivery mechanism in the codebase at all yet.
  • lifecycle.clearAfterTurn was missing entirely (real, live field -- SessionManager reads it, HerdrPeerLauncher logs a no-op warning for non-claude-code peer kinds).
  • the HOT bullet under configReload claimed the whole fleet: block reloads live, but ConfigRef's own javadoc explicitly carves out fleet.leaders as needing a restart (Bridged.main builds the lead scanner/launcher once at startup) with no deferred-list warning on reload. Added that exception inline.
  • fleet.leaders' demotion consequence -- a pane whose tab does not match any configured entry silently resolves as a WORKER and every orchestration call it makes is refused, with no startup error -- is now stated directly next to the leaders: block, not just implied by the multi-lead rationale earlier in the file.

No parsing code touched. YAML validated with PyYAML (see below).

Note for the reviewer: mvn clean install has one pre-existing failing test, dev.ltms.bridged.msg.AmqpReplyInboxRecoveryRaceTest#recoverySweepDoesNotFailAPublishThatRegistersWhileItIsRunning. Confirmed it fails identically on an unmodified origin/main checkout (verified in a disposable worktree before touching anything) -- unrelated to this change, which only touches bridged.example.yaml.

Audited bridged.example.yaml against BridgedConfig.KNOWN_TOP_LEVEL_KEYS. Every top-level key the daemon reads (bind, herdrSocket, profiles, guard, worktreeRoot, lifecycle, spawnReadyTimeoutMs, spawnReadyPollMs, broker, primary, fleet, leadHeartbeat, health, placement, auth, configReload, quarantineCooldownSeconds) turned out to already be present in the example, including fleet.leaders/architects/developers/reviewers and broker: with the LavinMQ note and absent-behaviour statement -- prior tickets (CB-573, CB-566, CB-559, CB-579, CB-527/528) each kept the example in step with their feature. What this PR actually fixes -- inaccuracies found while tracing every field through the parser and its consumers: - health.workingSuspectAfterSeconds / paneProbeIntervalSeconds claimed enforced minimums (300 / 60) that do not exist in code -- only intervalSeconds is clamped (floor 15 via Math.max). The other two are parsed into the Health record but never read by anything downstream (FleetHealthMonitor only consumes intervalSeconds). Comment corrected to say so plainly instead of documenting a lie. - notifications.mode: webhook was undocumented as only flipping the healthCoverage string bridge_list reports ("full" vs "detection-only") -- no webhook call is ever sent; there is no delivery mechanism in the codebase at all yet. - lifecycle.clearAfterTurn was missing entirely (real, live field -- SessionManager reads it, HerdrPeerLauncher logs a no-op warning for non-claude-code peer kinds). - the HOT bullet under configReload claimed the whole fleet: block reloads live, but ConfigRef's own javadoc explicitly carves out fleet.leaders as needing a restart (Bridged.main builds the lead scanner/launcher once at startup) with no deferred-list warning on reload. Added that exception inline. - fleet.leaders' demotion consequence -- a pane whose tab does not match any configured entry silently resolves as a WORKER and every orchestration call it makes is refused, with no startup error -- is now stated directly next to the leaders: block, not just implied by the multi-lead rationale earlier in the file. No parsing code touched. YAML validated with PyYAML (see below). Note for the reviewer: mvn clean install has one pre-existing failing test, dev.ltms.bridged.msg.AmqpReplyInboxRecoveryRaceTest#recoverySweepDoesNotFailAPublishThatRegistersWhileItIsRunning. Confirmed it fails identically on an unmodified origin/main checkout (verified in a disposable worktree before touching anything) -- unrelated to this change, which only touches bridged.example.yaml.
agent added 1 commit 2026-08-16 17:37:58 +02:00
CB-597: fix inaccuracies the example config already had, none actually missing
CI / contract (pull_request) Successful in 1m7s
CI / build (pull_request) Failing after 1m21s
0a2b3a4a56
Audited bridged.example.yaml against BridgedConfig's KNOWN_TOP_LEVEL_KEYS and
found every top-level key already documented (broker, health, lifecycle,
configReload, quarantineCooldownSeconds, fleet.leaders/architects/reviewers
included) — CB-573/CB-566/CB-559/CB-579/CB-527/528 each updated the example
alongside their feature. What was actually wrong:

- health.workingSuspectAfterSeconds/paneProbeIntervalSeconds claimed enforced
  minimums (300/60) that don't exist in code — only intervalSeconds is
  clamped (floor 15); the other two are parsed but never read anywhere.
- notifications.mode: webhook was undocumented as only flipping the
  healthCoverage label bridge_list reports — no webhook is ever sent.
- lifecycle.clearAfterTurn was missing entirely.
- the HOT bullet under configReload claimed the whole fleet: block reloads
  live, but ConfigRef's own javadoc carves out fleet.leaders as needing a
  restart with no deferred-list warning — added that exception.
- fleet.leaders' demotion consequence (unmatched tab -> silent WORKER
  demotion, no startup error) is now stated inline next to the block, not
  just implied by the multi-lead rationale higher up.
ltms merged commit 65c9deb4d1 into main 2026-08-16 17:59:41 +02:00
Sign in to join this conversation.