config-merge-recognize

Config merge: recognize aliased sections during rename deprecation window (e.g. [coordinator] ↔ [dispatcher])

Metadata

Statusdone
Assignedagent-99
Agent identityf51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e
Created2026-04-26T20:00:02.817702207+00:00
Started2026-04-26T20:01:11.618248505+00:00
Completed2026-04-26T20:25:55.564911347+00:00
Tagseval-scheduled
Eval score0.92
└ blocking impact0.95
└ completeness0.95
└ coordination overhead0.90
└ correctness0.95
└ downstream usability0.90
└ efficiency0.85
└ intent fidelity0.73
└ style adherence0.90

Description

Description

The rename-dispatcher-daemon work renamed local config's [coordinator] table to [dispatcher]. Global config still has [coordinator] (older). The merge logic treats them as DIFFERENT sections — so local [dispatcher].executor = 'claude' does NOT override global [coordinator].executor = 'native'. Result: silent inheritance of global values the user thought they'd shadowed.

Same problem will recur for any future rename if the merge logic doesn't understand aliases.

Fix

  1. Add an alias map for table sections: { 'coordinator' → 'dispatcher', 'coordinator_agent' → 'chat_agent', 'CreateCoordinator' (IPC) → 'CreateChat', ... }. Single source of truth for this map.
  2. During config merge, treat aliased sections as the same destination table. Local [dispatcher] overrides global [coordinator]. Local [coordinator] overrides global [dispatcher].
  3. On parse, emit one-time deprecation warning when an old-name section is read: 'Deprecated: [coordinator] table is now [dispatcher]; please rename in
  4. Tests: assert local-new-name overrides global-old-name AND vice versa, with the warning fired.

Out of scope

  • The actual rename — that's done in rename-dispatcher-daemon.
  • Removing the deprecation aliases — that's a future cleanup task once everyone has migrated.

Validation

  • Failing tests first: test_local_dispatcher_overrides_global_coordinator, test_local_coordinator_overrides_global_dispatcher, test_deprecation_warning_fires_once_per_load
  • Implementation makes tests pass
  • cargo build + cargo test pass with no regressions
  • Manual: in current repo (local has [dispatcher], global has [coordinator]), wg config show reports the merged values correctly with [dispatcher] winning

Depends on

Required by

Log