Give Muse Spark its own reasoning effort ladder - #979
Merged
TheGreatAxios merged 3 commits intoSep 14, 2026
Merged
TheGreatAxios merged 3 commits into
TheGreatAxios merged 3 commits into
Conversation
muse-spark-1.3-contributor fell through to UNKNOWN_MODEL_EFFORTS, so `minimal` was unreachable from the picker, the flag, and agent profiles. Measured against the Go Responses endpoint, reasoning tokens are ~95% of every completion and scale 6x from minimal to medium with no change in pass rate on two objectively graded tasks. The gateway accepts minimal and rejects `none` with HTTP 400, so the rung set is minimal/low/medium/ high and the family default is `low`. Also pins SOURCE_MAX_TOKENS above the measured truncation floor: reasoning consumes max_output_tokens before any answer text, so a 512 cap at medium effort returns 3 tokens of answer, not a shorter answer. CL-7867
TheGreatAxios
force-pushed
the
cl-7867-muse-spark-cannot-select-minimal-reasoning-effort-paying-6x
branch
from
September 13, 2026 18:01
bbaa26f to
6a23625
Compare
The id list covered the two ids in packages/opencode-go and missed the three in packages/zen: muse-spark-1.3, muse-spark-1.2, and muse-spark-1.3-contributor-free. Nothing normalizes the model string on the way to supportedEfforts, so those three still fell through to the unknown-model ladder and still could not select minimal — the exact symptom this change exists to fix, surviving on the ids nobody tested. Confirmed against the live endpoints that minimal returns 200 and none returns 400 for the two contributor ids and for contributor-free. muse-spark-1.3 and -1.2 answered with a billing gate rather than a model rejection, so their ladder is inferred from the family, not measured. A prefix also matches isMuseSparkLeafProvider in provider-family.ts, which already keyed off /^muse-spark/i — the two would otherwise have disagreed about which models are Muse Spark. CL-7867
Collaborator
Author
Critic review · CommentGives Muse Spark a Evidence checked
Should-fix (comment-only, no behavior change)
Nits (non-blocking)
Gaps (not covered)
VerdictNo functional blockers — merge-ready once the |
The prior comment named isMuseSparkLeafProvider, which exists nowhere.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes CL-7867.
muse-spark-1.3-contributorfell through toUNKNOWN_MODEL_EFFORTS, sominimalwas unreachable from the model picker,--reasoning-effort, and agent profiles.Why it matters
Reasoning tokens are ~95% of every completion on this model — a 58-token answer ships behind 500–2000 reasoning tokens — so the effort rung is the largest single lever on token spend and latency.
Direct
/responsesprobes,store: false, deterministic regex graders, 2–3 repeats per cell:6.2x the reasoning spend at
mediumversusminimal, identical pass rates.highis not monotonic withmedium— it reasons less while passing the same, which is what a saturated rung looks like.The gateway accepts
minimaland rejectsnonewith HTTP 400 onreasoning.effort, so the rung set isminimal/low/medium/high. Family default islow, notminimal— both saturate the graded tasks, andlowstill costs a quarter ofmedium.Max-tokens floor
Reasoning consumes
max_output_tokensbefore any answer text:At 512 with
medium, the model spent 397 tokens reasoning and returned 3 tokens of answer.SOURCE_MAX_TOKENSis 16384 with no override path, so nothing is broken today — the added test is what stops a future per-source override dropping below the floor.Testing
bun run typecheck,bun run lint, full suite: 8893 pass. The 3 failures are pre-existing onmain(pack-inflation-guard-delta, and an order-dependentdefault-sinkvendor test that passes in isolation).Confirmation gate (
--repeats 5againstbaseline-0286.json) is the remaining unchecked Outcome box.