feat(deepseek): ship the canonical V4.1 Flash id and let the Ark rows be configured - #5561
Open
huangruiteng wants to merge 2 commits into
Open
huangruiteng wants to merge 2 commits into
huangruiteng wants to merge 2 commits into
Conversation
… be configured The shipped managed execution profile named the retired `deepseek-v4-flash` spelling while the product label and the vendor's current id are DeepSeek-V4.1-Flash under `deepseek-flash`. Switch the product default to the canonical id and keep the retired spelling as an explicit `LOOPX_TURN_MODEL` / `DSH_MODEL` override, so a host that pins it is a configuration change. The steward-executor model field now offers the DeepSeek ids, and the Ark catalog and runtime config rows take their upstream ids from the operator's own configuration instead of a fixed GA literal, so adopting a newer endpoint id is also a configuration change. Both surfaces render the same V4.1 Flash label. Signed-off-by: huangruiteng <huangrt01@163.com>
…ash label A configured upstream id must yield its own catalog row, the two historical aliases must keep resolving, and the App catalog and the CPA runtime config must not render two different generations for one row. Signed-off-by: huangruiteng <huangrt01@163.com>
This branch has not been deployed
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.
Goal And Delivered Outcome
session for the DeepSeek-V4.1-Flash generation to be configurable on the
surfaces that name a managed model.
deepseek-v4-flash, the retired spelling of the same DeepSeek-V4.1-Flashgeneration whose current vendor id is
deepseek-flash. The Ark rows of theprovider-routing catalog were pinned to one GA literal
(
deepseek-v4-flash-ga-260731) and labelled "V4 Flash", so an operator couldnot adopt a newer upstream id without a source change, and the App catalog
and the CPA runtime config could drift apart. The steward-executor model field
offered only Codex model suggestions.
profile readback moves from
deepseek-v4-flash@hightodeepseek-flash@high(first
unitrow); an operator who configures a newer upstream id gets thatid's own Ark row and a V4.1 Flash label (both
integrationrows); a host thatstill pins the retired spelling keeps resolving it through
LOOPX_TURN_MODEL/
DSH_MODEL, unchanged.main.Author Declaration
through the DeepSeek API, on the maintainer's machine, from the maintainer's
in-session request.
Implemented against
in-session request is the basis. The statements this change keeps consistent
with that request are the execution-profile table in
docs/reference/protocols/loopx-turn-v0.md, the managed-profile statements indocs/reference/operator-model-credential.mdanddocs/architecture/rfcs/harness-selection-dsh-pi-v0.md, and the model table inpackages/loopx-codex-provider-routing/RUNBOOK.md.MANAGED_MODEL_DEFAULTinloopx/control_plane/turn_driver/execution_profile.pypytest tests/test_turn_managed_executor_binding.py tests/test_manager_channel_binding.pyMODEL_ENV_VAR/LEGACY_MODEL_ENV_VARresolution, unchangedark_selectors(),AppCatalog.SELECTORSinoperator_catalog.pypython packages/loopx-codex-provider-routing/smoke/operator_smoke.pyoperator_runtime.runtime_configreusingARK_FLASH_LABEL/ARK_PRO_LABELtest_runtime_config_renders_the_same_generation_labelapps/presentation/dashboard/src/features/personal-workspace/capability-configuration-fields.tsxnode --experimental-strip-types apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjsdocs/reference/**,docs/integrations/deepseek-harness-connector.md,loopx/dsh_goal_mode/README.md; both RFCs carry a dated revision note and keep their original dated recordloopx check --scan-path .and diff reviewSELECTORSview still describes a stock configuration while anAppCataloginstance projects the ids its own operator configured; ran every check listed
below on the tested revision. Deliberately not run: a live bounded Turn
against a vendor endpoint (the DeepSeek Harness SDK is absent from the
validation environment) and the dashboard bundle build, so the suggestion list
is covered by its source-level contract smoke only.
Scope And Continuation
and their labels are consistent across the managed profile, the
provider-routing catalog, the runtime config, the dashboard field and the
current-state docs. A separate, non-repository adjustment to one personal
Codex App install is not part of this PR.
Validation
unitpasseduv run --extra test python -m pytest tests/capabilities tests/test_manager_channel_binding.py tests/test_turn_managed_executor_binding.py tests/test_chat_machine_configuration_api.py tests/test_dsh_goal_mode.py tests/test_chat_dsh_adapter.py tests/test_chat_manager_context.py tests/test_chat_executor_profile.py -q→ 2248 passed, 42 skippedintegrationpassedpython packages/loopx-codex-provider-routing/smoke/operator_smoke.py→ Ran 21 tests, OK (offline operator: three-account ring, catalog rows, runtime config, rollback)integrationpassedpython packages/loopx-codex-provider-routing/smoke/codex_provider_routing_smoke.py→ extension smoke passedunitpassednode --no-warnings --experimental-strip-types apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-contract.test.mjs→ passedstaticpasseduv run --extra test ruff check packages/loopx-codex-provider-routing/src/loopx_codex_provider_routing loopx/control_plane/turn_driver/execution_profile.py;git diff --checkstaticpassedloopx check --scan-path .→ errors=0, warnings=0; public boundary scan clean over 4450 filesreal_entrypointnot_runend — profile resolution, channel binding, machine configuration and the
capability UI contract — and the provider-routing package's offline smoke
covers catalog generation, the rendered runtime config and rollback. Not
covered here: a live managed Turn and the CPA data plane on a real operator
machine, which need an operator credential and the running service.
Documentation changes are covered by the static row and the diff review.
Frontend / Visual Evidence
Modelfield's suggestion list offeredgpt-6-sol,gpt-6-luna,gpt-6-astra.deepseek-flashanddeepseek-v4-pro. The control staysfree text; no layout, interaction, loading or error state changed.
<datalist>suggestion list, which a static capture cannot show (the popup is browser
chrome, not page pixels), and the dashboard bundle was not built in the
validation environment; the field is covered by the source-contract smoke
above. A built-dashboard capture can be added on request.
in an existing datalist, no new element and no new failure path, while the
operator can still type any endpoint id their host serves. Keeping the retired
spelling out of the suggested set leaves one generation visible instead of
two.
Type of Change
LoopX Area
Technical Direction
DSH / Pi: L1 Observation and Managed Runtime Selection
— managed host binding and execution profile sections, which carry the dated
revision note for this change.
Shared-authority RFC fixture impact
migration or the shared Goal Authority RFC.
Boundary Checklist
.loopx/,.codex/goals/, and liveACTIVE_GOAL_STATE.md).none.Signed-off-bytrailer (git commit -s).