Skip to content

Default to the spark model instead of Muse's contributor default - #4

Open
webandseo wants to merge 2 commits into
rtravellin:mainfrom
webandseo:fix/spark-default
Open

webandseo wants to merge 2 commits into
rtravellin:mainfrom
webandseo:fix/spark-default

Conversation

@webandseo

Copy link
Copy Markdown
Contributor

With no --model, muse exec runs Muse's catalog default, muse-spark-1.3-contributor, whose catalog entry says content may be used for product improvement. So every review, critique, delegate run and transfer made through the plugin lands on that model unless the user remembers --model spark each time, and the repository content in those prompts goes with it.

This changes the default, so it is your call as maintainer; I've kept it to one commit to make it easy to take or leave.

The bridge now always names a model: --model if given, else MUSE_CC_MODEL (an alias or a full catalog id), else the spark alias (muse-spark-1.3). --model contributor or MUSE_CC_MODEL=contributor still selects the contributor model explicitly.

  • muse.mjs: resolveModelSelection(); runHeadlessAgent resolves the model for every launch, so review, critique, delegate runs (foreground and background workers), transfer, the stop-time review gate and check --probe are all covered.
  • /muse:check gains a model: line with the model that will be used and why (--model, MUSE_CC_MODEL, or plugin default), plus the catalog note for that model; JSON gains models.selected. check accepts --model, and --probe uses the selected model. The catalog list labels Muse's own default "(Muse default)".
  • README model sections and Environment table, commands/*.md, the delegate agent and runtime skill notes, CHANGELOG (Unreleased).
  • Tests: every exec path defaults to muse-spark-1.3; MUSE_CC_MODEL takes aliases and full ids and --model beats it; check reports the selected model and its source.

Independent of #2 and #3. It shares the runEveryExecPath test helper with #3 (identical text, same place) and, like both, adds a line at the top of the CHANGELOG's Unreleased section; I'll rebase whichever lands later.

Tests: 113/113 locally on Windows.

🤖 Generated with Claude Code

@rtravellin rtravellin left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks right for new runs: everything goes through runHeadlessAgent, background workers inherit MUSE_CC_MODEL, and check --model matches real runs. One question first.

Resume may switch models (scripts/lib/muse.mjs:707). --model is now always passed, so /muse:delegate --resume without --model gets spark even when the original run used another model. For example, a run started with --model contributor and continued with --resume changes model partway through. The resume path (executeTaskRun with resumeSessionId) doesn't look up the earlier run's model, and no test covers resume.

This only matters if Muse otherwise keeps a session's model when --model is omitted. If it does, could you skip the default on resume, or reuse the model recorded on the run being resumed?

This will also need a rebase: #2 and #3 are merged, and this one overlaps with both (muse-bridge.mjs, lib/muse.mjs, CHANGELOG, README).

webandseo and others added 2 commits October 4, 2026 14:30
With no --model, `muse exec` runs Muse's catalog default,
muse-spark-1.3-contributor, whose catalog entry says content may be used
for product improvement. The bridge now always names a model:
--model if given, else MUSE_CC_MODEL (alias or full id), else the `spark`
alias (muse-spark-1.3). `--model contributor` / MUSE_CC_MODEL=contributor
still select the contributor model explicitly.

- muse.mjs: MODEL_ENV, DEFAULT_MODEL_ALIAS and resolveModelSelection();
  runHeadlessAgent resolves the model for every launch, so review,
  critique, delegate runs (foreground and background workers), transfer,
  the stop-review gate and `check --probe` are all covered.
- /muse:check shows a `model:` line with the model that will be used and
  why (--model, MUSE_CC_MODEL, or plugin default), plus the catalog note
  for that model; JSON gains models.selected. check accepts --model, and
  --probe uses the selected model. The catalog list labels Muse's own
  default "(Muse default)".
- README model sections and Environment table, commands/check.md, and
  the delegate agent/skill notes updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Muse keeps a session's model when --model is omitted on resume (checked
on 1.3.0-R3401.1: a session started on muse-spark-1.3 stays on it when
resumed without --model, while a new session without --model gets
muse-spark-1.3-contributor). Always passing the plugin default switched
a resumed contributor run to spark. runHeadlessAgent now takes resume and
then only forwards an explicit --model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@webandseo

Copy link
Copy Markdown
Contributor Author

Muse does keep the session's model: on 1.3.0-R3401.1, a session started with --model muse-spark-1.3 and resumed with the same --session-id and no --model stayed on muse-spark-1.3, while a new session without --model got muse-spark-1.3-contributor. Fixed in 5ed83b3: runHeadlessAgent takes resume, and on resume only an explicit --model is forwarded, so neither the default nor MUSE_CC_MODEL switches a resumed session. Test covers resume with and without MUSE_CC_MODEL, and with an explicit --model. Rebased on main (merged with #3's foreign-context change).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants