Repository navigation
chore: update remote config (GPT-6.1 Terra, Kimi K3.1 Pro, Minimax M3.1 Flash, Mercury 3, thinking levels) - #1959
Merged
Merged
Conversation
Adds the ability to rename a spec eval's output score name, which is shown on the Compare Run Configurations page. Backend: - update_eval accepts output_score_names (positional, same length as the eval's output_scores). rename_eval_output_scores validates the new names and unique json_keys, then re-keys EvalRun.scores across every EvalConfig and run. Eval + affected run files are saved atomically with rollback if any save fails. - update_spec regenerates the auto-generated score instruction when the spec name changes (mirrors the existing eval-name propagation), without clobbering user-customized instructions. Frontend: - EditDialog fields support an optional custom_setter; such fields are excluded from the main PATCH body and persisted via the callback, and the main PATCH is skipped when no plain fields remain. - The spec page Edit dialog gains a Score Name field per output score, which PATCHes the eval endpoint. Regenerated the OpenAPI client. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Multiple fields can share a custom_setter (all eval score-name fields persist via a single endpoint call). EditDialog now invokes each distinct setter once per save cycle, avoiding redundant eval PATCHes / run migrations when an eval has multiple output scores. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Per review: mutating the on-disk score name and re-keying every EvalRun pollutes git history (each run is a tracked file) and is destructive. Replace it with a cosmetic display name that never touches stored data. - EvalOutputScore gains an optional `display_name` (max 32). `json_key()` still derives from `name`, so stored eval runs are never affected. - update_eval: `output_score_names` -> `output_score_display_names`. The new `set_output_score_display_names` just sets display names and saves the single eval file (no run migration, no rollback machinery). Empty entries clear the display name. - Frontend: new `score_display_name(score)` helper (display_name || name) applied at all display sites (compare table, eval configs, run result, eval goals). json_key lookups stay on `name`. - Spec-page Edit field relabeled "Score Display Name" and clarified as cosmetic; PATCHes output_score_display_names. - Tests updated: display-name behavior incl. run files unchanged byte-for- byte, clear, length validation; removed migration/rollback tests. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The display-name mechanism is an implementation detail; users just see it as editing the score name. Field still persists via the display name under the hood (no stored data changes). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The LLM judge's conversation (system prompt, rendered judge prompt and the judge's reply) was discarded after scoring, so there was no way to see what a judge prompt template rendered. V2EvalResult and EvalRun gain a judge_trace field, the LLM judge fills it from its own run, and the eval runner persists it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The LLM judge result cell opens the saved judge trace from a "Judge trace" link. Runs saved before judge_trace existed keep the "View reasoning" link over intermediate_outputs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…iption
The default V2 LLM-judge prompt baked the task's instruction into a
<task_description> block, which goes stale as soon as a run config's prompt
differs. It now opens with a short intro and shows the full trace
(<trace>{{ trace | format_trace }}</trace>) for both single- and multi-turn
tasks; the trace already carries the system message actually used.
Eval steps are worded by the task's turn mode, since "the model's output" is
ambiguous over a whole trace: single-turn steps say "the model's response";
multi-turn per-response criteria say "any of the model's responses", and
desired behaviour is judged "across the conversation".
Judge templates can also bind {{ system_prompt }}, the first system message
in the trace, for hand-written final_message templates.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The default judge now reads only the formatted trace, so a message whose content is a list of parts (seeded or multimodal) must keep its text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
OpenAI's Responses API (used for OpenAI models on OpenRouter, and by LiteLLM for Responses-only OpenAI models) treats a function tool as strict unless the request says otherwise. Strict mode makes every property required, so models invented values for optional tool arguments. LiteLlmAdapter.litellm_tools() now returns copies of each user tool definition (MCP, Kiln task, built-in, skill and unmanaged tools) with "strict": false added when the tool does not set strict itself. The tool's own definition is not mutated. ToolFunction gains an optional strict key. The task_response structured-output tool and the json_schema response_format are unchanged. LiteLLM drops the key for Anthropic, Gemini/Vertex and Fireworks, and Bedrock Converse only forwards strict when true; other providers receive it as-is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YFynGt6LHLUAJbdyxfWoMb
Bumps [mcp](https://github.com/modelcontextprotocol/python-sdk) from 1.10.1 to 1.30.0. - [Release notes](https://github.com/modelcontextprotocol/python-sdk/releases) - [Changelog](https://github.com/modelcontextprotocol/python-sdk/blob/main/RELEASE.md) - [Commits](modelcontextprotocol/python-sdk@v1.10.1...v1.30.0) --- updated-dependencies: - dependency-name: mcp dependency-version: 1.30.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
Many tags on an eval made the right column grow to fit them on one line, which squeezed the issue description. The column now uses the same width as the eval run page and the Run page, and the tags wrap inside it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The eval results list no longer carries each run's judge_trace. It gets a
has_judge_trace flag, and a new GET .../eval_config/{eval_config_id}/
eval_run/{eval_run_id}/judge_trace endpoint returns one run's trace. The
results page fetches it only when "Judge trace" is clicked, and the dialog
opens extra-wide with every message collapsed, plus loading and error
states. The test-judge endpoints now return judge_trace, and the Test
Judge pane shows it through the same JudgeTraceLink component.
EvalRun and V2EvalResult materialize list-valued message content in
judge_trace, so multi-part judge prompts survive saving and copying. The
EvalRun docs say why judge_trace may sit next to scored_run_id, and both
field descriptions now match.
Adds datamodel, G-Eval, API and web tests for the above.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The GET .../eval_config/{eval_config_id}/eval_run/{eval_run_id}/judge_trace
endpoint is read-only and declares ALLOW_AGENT, like the neighbouring
results endpoint. Its checked-in annotation lets the API bindings check
pass.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KIL-850 feat: save and show the judge trace on eval runs
KIL-848 Fix: keep the eval page right column at the side-column width
Drops the spec-rename score-instruction regeneration (out of scope for the display-name approach) in favor of main's eval sync logic. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…field
- eval_scores returns score_display_names ({json_key: display name}) per eval,
so the task-level Compare page labels (table and charts) show the display
name instead of a prettified JSON key.
- Spec page score field: custom required-validator and clearer description.
- EditDialog passes an optional per-field validator through to FormElement.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…anges The dev server watched every *.py file under .venv, because uvicorn's default ".*" exclude matches file names only. A uv sync that reinstalls a package rewrites thousands of files and set off a long run of restarts. dev_server.py now passes the repo's .venv and .worktrees folders to uvicorn.run as reload_excludes. A new reload_excludes() in app/desktop/dev_reload.py builds that list. It lives in its own module because importing dev_server.py sets the dev env vars, which tests can't afford. The paths are absolute because uvicorn 0.32 skips a folder only when it's given as an absolute path. Only folders that exist are listed: for an absolute exclude that doesn't exist, uvicorn calls Path.cwd().glob(path) and fails to start with "Non-relative patterns are unsupported". A .worktrees folder created after startup is ignored only after a restart. The generated studio_server api_client stays watched: the server imports it, so a change there should reload. Tests cover the folder list for each mix of existing folders, the uvicorn.run options, and the real uvicorn.Config plus FileFilter: a missing .worktrees doesn't crash, a .py file under .venv is ignored, and an app file is still watched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YTPsBVoSnWwfpGnkzqkid8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YTPsBVoSnWwfpGnkzqkid8
- Run result page: V2 result renderers label scores by display name.
- Escape labels in the compare chart tooltips (display names are free text).
- Display-name rules live on the model: strip, blank or equal-to-name clears,
unique across scores; Eval.set_output_score_display_names validates before
assigning and respects readonly.
- PATCH output_score_display_names is now a {json_key: name | null} map with
partial updates; eval_scores score_display_names is required.
- Spec page field is optional with the score name as placeholder, keeps the
built-in max-length check, and only sends changed names.
- EditDialog custom setters receive all their field values and run before
the main PATCH.
- Rating sidebar and agent overview carry the display name.
- Tests for model rules, rejected requests saving nothing, setter ordering,
and the new formatters.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drop the separate dev_reload.py module and the startup-table note in the conventions skill. The tests now check the excludes dev_server.py passes to uvicorn.run, and that uvicorn accepts them and skips those folders. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YTPsBVoSnWwfpGnkzqkid8
Users only see score names once they compare run configs, so the rename control lives there: a pencil after each score name opens a small dialog (pre-filled, required) that PATCHes the eval's display names. Labels update in place without refetching. Drops the spec-page Edit dialog field and the EditDialog custom_setter mechanism it needed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The trace intro is picked by turn mode and kept short: the formatted trace labels its own blocks. kiln_requirements and rag steps no longer say "the model's output"; multiturn issue examples are compared per response; the jailbreak steps drop "ever"; the safety line says "tag" when there is one. The tool-call step inlines the template's tool-use guidelines instead of pointing at tags the prompt never contained. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Single-turn CSV imports and runs from before traces were recorded have no
trace, so the trace-based default judge skipped every one of them, which
broke calibration on imported golden sets. The LLM judge now builds a
minimal user/assistant trace for its template when a run has none. Only the
judge sees it: step-count, tool-call and code checks still skip.
The two-message builder moves out of the MCP adapter into
utils/open_ai_types.single_turn_trace so both share it.
The trace formatter keeps a placeholder for image, audio and file parts,
and unwraps Kiln tool output from list content as it does from strings.
system_prompt_from_trace moves onto EvalTraceFormatter, and the UI says
{{ system_prompt }} is the evaluated model's prompt, not the judge's.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Rename dialog ignores a load from an earlier opening that finishes last. - Rating options merged across evals take the first display name set. - Tests: create_evaluator rejects duplicate display names with 422. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix: send strict false on user tool definitions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYPPi6eRYD6EC3yUyw2
…n model list Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYPPi6eRYD6EC3yUyw2
Main added drive-only eval jobs: TraceIndex.create, which always generates, and a seed that keeps the newest trace of each key. This branch shares the trace index between runners through TraceIndexRegistry. - trace_index.py: a seed keeps the newest trace of each key, then merges it into the shared view. A shared entry the seed read gives way to a newer trace, as in a new index. An entry filed after the read, by a job that generated it, stays while its file exists. create and get_or_create record through the shared paths lock. - eval_runner.py: main's _trace helper picks create or get_or_create; it gets the index through this branch's awaited _trace_index. The constructor takes both judge and trace_index_registry. - jobs/workers/eval.py: the runner gets both judge and the registry. - test_trace_index.py: a joining index now takes a newer trace from disk, and keeps a trace filed after its read.
…_ui/undici-7.30.1 chore(deps): bump undici from 7.30.0 to 7.30.1 in /app/web_ui
docs: fix CONTRIBUTING links after the move to .github
perf: speed up eval job requests on large tasks
Ternary Bonsai 2 9B on OpenRouter and Ultramarine 1 Flash on Fireworks AI, each as the first model of a new family. No suggested flags. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYMnP485oCL4ejxqmcU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYMnP485oCL4ejxqmcU
chore: add Minimax M3.1 Flash and Mercury 3 to model list
…0-27 chore: mark Arcee Trinity Large (Thinking) on OpenRouter deprecated in model list
…inimax-m3-1-flash-fireworks-2026-10-23
…e-spec-names fix: stop two evals with the same name from sharing datasets
…1-flash-fireworks-2026-10-23 chore: add Fireworks provider to Minimax M3.1 Flash
…-2026-10-26 Picks up the Playwright runner fix (ubuntu-24.04). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpSFojqCaPsVqdj8f77kdp
Picks up the Playwright runner fix (ubuntu-24.04). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CpSFojqCaPsVqdj8f77kdp
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYPPi6eRYD6EC3yUyw2
Keeps Mercury 3 from main and adds Ternary Bonsai 2 9B and Ultramarine 1 Flash after it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYMnP485oCL4ejxqmcU
…ra-2026-10-27 chore: add GPT-6.1 Terra and GPT-6.1 Terra Pro to model list
chore: add Kimi K3.1 Pro to model list (openrouter)
…-flash-together-2026-10-26 chore: mark DeepSeek V4 Flash 0731 on Together AI deprecated
chore: add Ternary Bonsai 2 9B and Ultramarine 1 Flash to model list
…ated OpenRouter no longer serves openai/o4-mini, openai/o4-mini-high or qwen/qwen3-next-80b-a3b-thinking; the plaintext smoke test returns 404 not-found for all three. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZFkYLn5RfNhKdvTbtxgPy
…0-29 chore: mark o4 Mini and Qwen 3 Next 80B Thinking on OpenRouter deprecated
6 of 13 tasks
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.
Description
Publishes the model list on
mainto the remote config: seven new models (GPT-6.1 Terra, GPT-6.1 Terra Pro, Kimi K3.1 Pro, Minimax M3.1 Flash, Mercury 3, Ternary Bonsai 2 9B, Ultramarine 1 Flash), two DeepSeek V4.1 Flash provider backfills, corrected Cloudflare and OpenRouter thinking levels, new Fireworks thinking levels, and five deprecated provider entries.Author Review (required)
Architecture Review (select 1)
Review Style Requested (select 1)
Agentic Code Review (must check all before requesting CR)
What to Review
Remote config publishlibs/core/kiln_ai/adapters/ml_model_list.pyUI Review (select all that apply)
Agentic PR Summary
TLDR: Merging this PR publishes the model list on
mainto every Kiln client. It carries seven new models (#1969, #1979, #1982, #1985), a Fireworks provider (#1970), two provider backfills (#1952), thinking-level fixes (#1960, #1962, #1963) and five deprecated provider entries (#1978, #1983, #1986). Targetsremote_config. Thetogether3.0 test failure is fixed onmainby #1977.Kiln clients read the model list from the published remote config. The CI build makes that config from the
remote_configbranch, not frommain.Changes to the published config
openaiandopenrouter, and GPT-6.1 Terra Pro onopenrouter(chore: add GPT-6.1 Terra and GPT-6.1 Terra Pro to model list #1982). Onopenai, Terra hassupports_function_calling=False.openrouter(chore: add Kimi K3.1 Pro to model list (openrouter) #1979).openrouterandtogether_ai(chore: add Minimax M3.1 Flash and Mercury 3 to model list #1969), and onfireworks_aiwith image input (chore: add Fireworks provider to Minimax M3.1 Flash #1970).openrouter, with a new model familyinception(chore: add Minimax M3.1 Flash and Mercury 3 to model list #1969).openrouter, with a new model familyprismml(chore: add Ternary Bonsai 2 9B and Ultramarine 1 Flash to model list #1985).fireworks_ai, with a new model familypaper_instruments(chore: add Ternary Bonsai 2 9B and Ultramarine 1 Flash to model list #1985).siliconflow_cnand DeepSeek V4.1 Flash 1017 oncloudflare: added (chore: add DeepSeek V4.1 Flash provider backfills and skip free-tier slugs in model skills #1952).litellm_allowed_openai_params: ["reasoning_effort"](feat: add Fireworks thinking levels to Muse Spark Open, GLM 5.3 Flash #1963).openrouter(arcee-ai/trinity-large-thinking): markeddeprecated(chore: mark Arcee Trinity Large (Thinking) on OpenRouter deprecated in model list #1983).together_ai(deepseek-ai/DeepSeek-V4-Flash-0731): markeddeprecated, and losessuggested_for_synthetic_user(chore: mark DeepSeek V4 Flash 0731 on Together AI deprecated #1978). The model list now has 19 synthetic-user suggestions, down from 20.openrouter,openai/o4-mini,openai/o4-mini-highandqwen/qwen3-next-80b-a3b-thinking: markeddeprecated(chore: mark o4 Mini and Qwen 3 Next 80B Thinking on OpenRouter deprecated #1986).No model is removed. The embedding and reranker lists do not change.
Checks
git merge-tree --write-tree origin/remote_config origin/main: no conflicts (checked 2026-11-02 11:20 UTC).test_backwards_compatibility_with_v0_19: failed from 2026-10-22 18:33 UTC (thetogether3.0.0 release) until Fix v0.19 compat test: pin together<3 in inline script deps #1977; passes since.Before you merge
remote_configpermits only that method.litellm_allowed_openai_paramsfield (pydantic drops unknown fields). Those clients will show the new Low/Medium/High levels, but per feat: add Fireworks thinking levels to Muse Spark Open, GLM 5.3 Flash #1963's own comment, LiteLLM's bundled model map lacks this model, so LiteLLM dropsreasoning_effortand the chosen level has no effect until the next app release. Nothing errors.Updates (2026-10-22)
max, DeepSeek V4.1 Flash 1017 tohigh). chore: set Cloudflare and OpenRouter thinking levels from provider effort lists #1962 merged and replaced them with the catalog's levels, so the earlier Decisions required item is resolved.mainalso gained KIL-850 feat: save and show the judge trace on eval runs #1938, KIL-851 fix: judge the full trace in the default judge prompt #1939 and perf: speed up the compare and evals pages on large tasks #1956, which change eval code, not the model files.Updates (2026-10-26)
together<3intest_backwards_compatibility_with_v0_19onmain.buildand Python 3.10–3.13 pass on1a3d99ab. WIP: test: pin together<3 in the kiln-ai 0.19 compatibility test #1964 carried the same pin and is no longer needed.mainalso gained fix: stop make dev auto-reload on .venv and .worktrees changes #1947, Bump FastAPI and Starlette to take security fixes #1951, fix: release the git sync lock when a waiting save is cancelled #1967 and ci: run the Playwright job on ubuntu-24.04 #1976. None changes the model files.c66200f6passed on re-run:test_stop_releases_the_bus_name_and_is_idempotent(Python 3.11) and the Playwrightcode judge: untouched does not warntest.Dependabotfailures are Dependabot's ownpypdfupdate jobs: the newestpypdfis under the repo's 7-dayexclude-newerwindow. Not this PR's..agents/skills/claude-maintain-models/scripts/test_check_thinking_levels.pyis not collected by CI, because pytest skips dot-directories. True, and the same holds fortest_conventions_gate.py, whose architecture doc says to run it by hand. It is not in the published config. A CI change belongs in its own PR, not in this publish PR.Updates (2026-10-27)
maingained Run the MCP integration tests against a local echo server #1955, chore: remove web code that has no caller after EB v2 #1965, fix: EB-V2 should delete early ended conversations on re-drive #1966 and fix: allow world tools in run configs created through the API #1974 since1a3d99ab; none changesml_model_list.py,ml_embedding_model_list.py,reranker_list.pyorremote_config.py.4f32aafb, every check run passes (29 of 29), andgit merge-tree --write-tree origin/remote_config origin/mainstill reports no conflicts (checked 2026-10-27 11:40 UTC).main, not from a model file, and it is not part of the published config. Merging this PR still ships that code to theremote_configbranch, so it is worth a look by fix: allow world tools in run configs created through the API #1974's author before the merge.mainyet, so neither is in this publish.6dedc941) and changesml_model_list.py: Fireworks thinking levels for Muse Spark Open and GLM 5.3 Flash, and a newKilnModelProvider.litellm_allowed_openai_paramsfield. These are now part of this publish; see Changes to the published config and Before you merge. CI re-runs on the new head.Updates (2026-10-28)
maingained feat: add judge=false to eval jobs to drive items with no judge #1975, chore(deps): bump undici from 7.30.0 to 7.30.1 in /app/web_ui #1972, docs: fix CONTRIBUTING links after the move to .github #1893 and perf: speed up eval job requests on large tasks #1961 since6dedc941; none changesml_model_list.py,ml_embedding_model_list.py,reranker_list.pyorremote_config.py.d2037dd6, every check run passes (29 of 29), andgit merge-treereports no conflicts (checked 2026-10-28 11:38 UTC).3f8f4a50). It adds Minimax M3.1 Flash (OpenRouter, Together) and Mercury 3 (OpenRouter, newinceptionfamily) toml_model_list.py, so both are now part of this publish.bab1ed36). It marks Trinity Large Thinking on OpenRouterdeprecated, so that is now part of this publish. Every check run passes onbab1ed36(29 of 29).2161763c); it changes spec code, not the model files.f5b13a7d). It adds afireworks_aiprovider to Minimax M3.1 Flash, with image input. No check suite failed onf5b13a7d.7c8e7a64). They add GPT-6.1 Terra, GPT-6.1 Terra Pro and Kimi K3.1 Pro, and deprecate DeepSeek V4 Flash on Together. No check suite failed on7c8e7a64. A sandbox timing test,test_async_tools_gather_truly_concurrent(expected under 0.6s, got 1.79s), failed once on the in-between headd428ee96(Python 3.12) and did not fail on7c8e7a64.40ddbd84). It adds Ternary Bonsai 2 9B (OpenRouter, newprismmlfamily) and Ultramarine 1 Flash (Fireworks, newpaper_instrumentsfamily), so both are now part of this publish.together<3pin.Updates (2026-10-29)
40ddbd84. No commit reachedmainsince the last update. The waiting model-file merges are chore: add DeepSeek V4.1 Flash provider backfills and skip free-tier slugs in model skills #1952, Cloudflare: thinking levels for DeepSeek V4.1 Flash 1017, GLM 5.3, Qwen 3.8 27B #1960, chore: set Cloudflare and OpenRouter thinking levels from provider effort lists #1962, feat: add Fireworks thinking levels to Muse Spark Open, GLM 5.3 Flash #1963, chore: add Minimax M3.1 Flash and Mercury 3 to model list #1969, chore: mark Arcee Trinity Large (Thinking) on OpenRouter deprecated in model list #1983, chore: add Fireworks provider to Minimax M3.1 Flash #1970, chore: add GPT-6.1 Terra and GPT-6.1 Terra Pro to model list #1982, chore: add Kimi K3.1 Pro to model list (openrouter) #1979, chore: mark DeepSeek V4 Flash 0731 on Together AI deprecated #1978 and chore: add Ternary Bonsai 2 9B and Ultramarine 1 Flash to model list #1985.40ddbd84, every check run passes (29 of 29), andgit merge-tree --write-tree origin/remote_config origin/mainreports no conflicts (checked 2026-10-29 11:17 UTC). The config generated frommaindiffers from the config generated fromremote_config, so there is still something to publish.deprecated(GPT o4 Mini - Medium, GPT o4 Mini - High, Qwen 3 Next 80B A3B Thinking). It is not onmainyet, so it is not in this publish.Updates (2026-10-30)
40ddbd84. No commit reachedmainsince 2026-10-28. The waiting model-file merges are unchanged: chore: add DeepSeek V4.1 Flash provider backfills and skip free-tier slugs in model skills #1952, Cloudflare: thinking levels for DeepSeek V4.1 Flash 1017, GLM 5.3, Qwen 3.8 27B #1960, chore: set Cloudflare and OpenRouter thinking levels from provider effort lists #1962, feat: add Fireworks thinking levels to Muse Spark Open, GLM 5.3 Flash #1963, chore: add Minimax M3.1 Flash and Mercury 3 to model list #1969, chore: mark Arcee Trinity Large (Thinking) on OpenRouter deprecated in model list #1983, chore: add Fireworks provider to Minimax M3.1 Flash #1970, chore: add GPT-6.1 Terra and GPT-6.1 Terra Pro to model list #1982, chore: add Kimi K3.1 Pro to model list (openrouter) #1979, chore: mark DeepSeek V4 Flash 0731 on Together AI deprecated #1978 and chore: add Ternary Bonsai 2 9B and Ultramarine 1 Flash to model list #1985.git merge-tree --write-tree origin/remote_config origin/mainreports no conflicts (checked 2026-10-30 11:14 UTC).ml_model_list.pystill differs between the two branches (386 lines added, 12 removed), so there is still something to publish.main.336cdb51). It marksopenai/o4-mini,openai/o4-mini-highandqwen/qwen3-next-80b-a3b-thinkingon OpenRouterdeprecated, so those are now part of this publish. CI re-runs on the new head.Updates (2026-11-02)
336cdb51. No commit reachedmainsince chore: mark o4 Mini and Qwen 3 Next 80B Thinking on OpenRouter deprecated #1986 on 2026-10-30. The waiting model-file merges are unchanged: chore: add DeepSeek V4.1 Flash provider backfills and skip free-tier slugs in model skills #1952, Cloudflare: thinking levels for DeepSeek V4.1 Flash 1017, GLM 5.3, Qwen 3.8 27B #1960, chore: set Cloudflare and OpenRouter thinking levels from provider effort lists #1962, feat: add Fireworks thinking levels to Muse Spark Open, GLM 5.3 Flash #1963, chore: add Minimax M3.1 Flash and Mercury 3 to model list #1969, chore: mark Arcee Trinity Large (Thinking) on OpenRouter deprecated in model list #1983, chore: add Fireworks provider to Minimax M3.1 Flash #1970, chore: add GPT-6.1 Terra and GPT-6.1 Terra Pro to model list #1982, chore: add Kimi K3.1 Pro to model list (openrouter) #1979, chore: mark DeepSeek V4 Flash 0731 on Together AI deprecated #1978, chore: add Ternary Bonsai 2 9B and Ultramarine 1 Flash to model list #1985 and chore: mark o4 Mini and Qwen 3 Next 80B Thinking on OpenRouter deprecated #1986.336cdb51, every CI check run passes. The only failures on the head are threeDependabotjobs, which are Dependabot's own update runs, not this PR's.git merge-tree --write-tree origin/remote_config origin/mainreports no conflicts (checked 2026-11-02 11:20 UTC).ml_model_list.pystill differs between the two branches (389 lines added, 12 removed), so there is still something to publish.Generated by Claude Code
The new deprecations look safe, but the previously reported nested world-tool failure still blocks merging.
Findings
<img alt="P1" src="https://greptile-static-assets.s3.amazonaws.com/badges/p1.svg?v=9" align="top">Nested world calls fail ▶Reviews (14) · Last reviewed commit: "Merge pull request #1986 from Kiln-AI/mo..." · Reviewed by Greptile