Metadata
| Status | done |
|---|---|
| Assigned | agent-1015 |
| Agent identity | f51439356729d112a6c404803d88015d5b44832c6c584c62b96732b63c2b0c7e |
| Model | claude:opus |
| Created | 2026-04-28T23:07:42.979211167+00:00 |
| Started | 2026-04-28T23:13:33.950085618+00:00 |
| Completed | 2026-04-28T23:20:46.558195506+00:00 |
| Tags | priority-high,design,profiles,config, eval-scheduled |
| Eval score | 0.82 |
| └ blocking impact | 0.85 |
| └ completeness | 0.85 |
| └ coordination overhead | 0.90 |
| └ correctness | 0.85 |
| └ downstream usability | 0.85 |
| └ efficiency | 0.80 |
| └ intent fidelity | 0.90 |
| └ style adherence | 0.85 |
Description
Description
User wants named profiles to switch the entire (model, endpoint, per-role overrides) bundle at runtime without hand-editing toml. Three starter profiles needed:
claude— claude:opus worker, claude:haiku for agency meta-taskscodex— codex:gpt-5.5 worker, codex:gpt-5.4-mini for agencywgnext— in-process nex handler with a localhost endpoint (local:<model> -e http://127.0.0.1:8088shape); user can change the endpoint per-machine
User quote: 'profiles that we can switch at runtime quickly... so we could have several profiles, I think, that are available to us, and make them easy to configure. So there should be claude, codex, and there should also now be wgnext, configured with localhost or something, but then we can just change the endpoint there.'
Goal
Decide the profile system shape and document it. Hand off concrete spec to the implementation task.
Forks to resolve
Storage
- A)
~/.wg/profiles/<name>.toml— one file per profile, full or partial config - B)
[profiles.<name>]sections inside~/.wg/config.toml— single-file - C) Both — partial overrides under
[profiles.<name>]in main config, with a separate file for full snapshots
Recommend A for clarity (one file = one profile = easy to share/version).
Command surface
wg profile list— list named profiles + which is activewg profile show [<name>]— print the resolved config (default: active)wg profile create <name> -m <model> [-e <endpoint>] ...— make a new profilewg profile use <name>— switch the active profile (writes the active-pointer somewhere)wg profile edit <name>— open in $EDITORwg profile delete <name>wg profile diff <a> <b>— show what changes between two profiles
Switching semantics
- Does
wg profile use <name>send a hot-reload IPC to the running daemon (likewg config -mdoes today)? YES — same UX. - Does it affect already-spawned worker agents? NO — they keep their original config. New workers pick up the new profile.
- Does it affect the chat agent? Open question — chat agents may already be running in different terminals. Probably the chat agent reads its own profile name on startup and stays on that profile.
Profile contents (what fields can be in a profile?)
Minimum: [agent].model, [dispatcher].model, [models.evaluator], [models.assigner], [models.flip], the relevant llm_endpoints entry. Plus: any per-handler env vars that need pinning.
Starter profiles
The fix-codex-cli task is already writing codex defaults — design how those become a profile rather than overwriting the global config. Probably: wg init --route codex-cli creates a codex profile and sets it active, instead of mutating the global default.
Validation
-
Design doc posted to task log via
wg log - Storage format chosen with rationale
- Full command surface specified (verb list + args + behavior)
- Hot-reload semantics defined (running daemon, in-flight workers, chat agents)
- Profile schema documented (which fields are profile-able, which stay global)
-
Migration path for users on existing
~/.wg/config.toml(default profile name? auto-create from current?) -
Smoke scenario list:
wg profile create,wg profile use,wg profile list, hot-reload check
Depends on
Required by
Log
- 2026-04-28T23:07:42.912730563+00:00 Task paused
- 2026-04-28T23:08:34.304207986+00:00 Task published
- 2026-04-28T23:08:57.905591218+00:00 Lightweight assignment: agent=Careful Programmer (f5143935), exec_mode=light, context_scope=task, reason=Careful Programmer's meticulous approach suits synthesizing multiple design forks and producing thorough specification for handoff to implementation.
- 2026-04-28T23:13:33.950090878+00:00 Spawned by coordinator --executor claude --model opus
- 2026-04-28T23:13:40.896102705+00:00 Starting design work on named profiles system
- 2026-04-28T23:15:09.421614803+00:00 Found existing wg profile (tier presets) and IpcRequest::Reconfigure (already used by wg config -m). Design will extend wg profile into full named runtime profiles using the existing IPC.
- 2026-04-28T23:18:53.351704577+00:00 Design doc complete: docs/design-named-profiles.md (553 lines). Decisions: storage A (one file per profile), active pointer ~/.wg/active-profile, reuse IpcRequest::Reconfigure (extended w/ optional endpoint+role_models), command surface (use/create/edit/delete/diff/init-starters + adjusted list/show), 3 starter profiles (claude/codex/wgnext) baked as templates. Migration path documented: existing config left intact, profiles overlay. wg init --route XYZ rewires to write profile not config. Smoke scenarios spec'd. Implementation checklist 13 steps in §8.
- 2026-04-28T23:20:42.356196492+00:00 Committed: 1f9642cb8 — pushed to remote (docs: design named profiles for runtime model/endpoint switching)
- 2026-04-28T23:20:46.558203571+00:00 Task pending eval (agent reported done; awaiting `.evaluate-*` to score)
- 2026-04-28T23:22:22.255339038+00:00 PendingEval → Done (evaluator passed; downstream unblocks)