Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
1a929b2
[Feature] Router: let algorithm.decision ask the decision model
Xunzhuo Oct 7, 2026
6e7c136
[Feature] Router: let projections read one option of a decision question
Xunzhuo Oct 7, 2026
83e337d
[Bug] DSL: validate decision-option routes and catalog-backed models …
Xunzhuo Oct 7, 2026
b491007
[Bug] Router: prepare set and span questions that ask the decision model
Xunzhuo Oct 7, 2026
5e52077
[Feature] Router: preview the decision selector's choice
Xunzhuo Oct 7, 2026
b9ed41f
[Bug] Recipes: plan a GPU-only decision model as a hardware requirement
Xunzhuo Oct 7, 2026
b9f8793
[Feature] Recipes: add the decision-balance Mixture-of-Models recipe
Xunzhuo Oct 7, 2026
9a9822a
[Feature] Router: keep personal data out of replay with a recipe data…
Xunzhuo Oct 7, 2026
b86b90e
[Feature] Dashboard: show the System One answers and routing latency …
Xunzhuo Oct 7, 2026
0b6327e
[Feature] Recipes: keep personal data out of decision-balance replay
Xunzhuo Oct 7, 2026
84005a0
[Test] Dashboard: re-pin the mom-v1 fixture receipt after its probe r…
Xunzhuo Oct 7, 2026
7da295c
[Feature] Recipes: send code to Flash-Next and hard STEM to extra-hig…
Xunzhuo Oct 7, 2026
085246c
[Feature] Router: restrict a listener to named models
Xunzhuo Oct 7, 2026
9c83ad4
[Bug] CLI: start vllm-sr serve on Docker daemons without a default br…
Xunzhuo Oct 7, 2026
62dabc9
[Bug] CLI: accept PII signal rules without a threshold
Xunzhuo Oct 7, 2026
ecea2a2
[Bug] Router: stop RouterDC warnings when no decision uses it
Xunzhuo Oct 7, 2026
a6c4adc
[Feature] Recipes: let decision-balance's PII rule use the model's ow…
Xunzhuo Oct 7, 2026
28c0728
[Feature] Recipes: raise decision-balance's effort to high from 0.675
Xunzhuo Oct 7, 2026
b1fee50
[Bug] Router: keep short-request usage out of context token calibration
Xunzhuo Oct 7, 2026
9b68761
[Bug] CLI: never leave the stack down over the sr-bench worker
Xunzhuo Oct 7, 2026
1b529e9
[Bug] Recipes: count only identifying types as decision-balance perso…
Xunzhuo Oct 7, 2026
2971c92
[Feature] Recipes: release decision-balance 0.3.2 with production fixes
Xunzhuo Oct 7, 2026
9cef61d
[Docs] Fix translated safety signal scan-budget links
Xunzhuo Oct 8, 2026
757946e
[Fix] Dashboard: surface the configured decision model and shared run…
Xunzhuo Oct 8, 2026
da42b7d
[Feat] Dashboard: manage decision models and identify serving modes
Xunzhuo Oct 8, 2026
af8c29a
[Fix] Dashboard: keep the decision model deploy action readable
Xunzhuo Oct 8, 2026
b0d69f3
[Feat] Dashboard: show decision runtime metrics and simplify model ma…
Xunzhuo Oct 8, 2026
5b2aefa
[Feat] Dashboard: add System One testing and model monitoring
Xunzhuo Oct 8, 2026
79b7de0
[Fix] Dashboard: include model runtime API in container builds
Xunzhuo Oct 8, 2026
a13be33
[Fix] Dashboard: preserve low-rate chart precision
Xunzhuo Oct 8, 2026
d03f15b
feat(dashboard): complete System One workspace and improve page loading
Xunzhuo Oct 8, 2026
c16a3bf
feat: clarify recipe defaults and complete decision model management
Xunzhuo Oct 8, 2026
f9d9dbd
fix(dashboard): let nested selectors handle Escape before dialogs
Xunzhuo Oct 8, 2026
7286615
Merge current main before unified decision task implementation
Xunzhuo Oct 8, 2026
f2dcb1e
feat(systemone): unify decision tasks, explicit entrypoints and insta…
Xunzhuo Oct 8, 2026
0b2b70f
feat(runtime): unify frontend modes and model replica pools
Xunzhuo Oct 8, 2026
48d35e4
Merge main for current protocol and published-model contracts
Xunzhuo Oct 8, 2026
26492c7
fix(runtime): complete pending activation and reject failed replica p…
Xunzhuo Oct 8, 2026
9bb5588
fix(dashboard): display model artifacts independently of deployment i…
Xunzhuo Oct 8, 2026
bfe3505
fix(runtime): require complete input evidence for judgment tasks
Xunzhuo Oct 8, 2026
a024439
docs(api): regenerate native input coverage contract
Xunzhuo Oct 8, 2026
3c6547c
test(runtime): verify coverage separately from published model answers
Xunzhuo Oct 8, 2026
13eb9ae
test(classification): separate external and repository imports
Xunzhuo Oct 8, 2026
20a8996
fix: keep decision observations responsive and replica outcomes accurate
Xunzhuo Oct 8, 2026
ebca7cb
style: satisfy replica dispatch static checks
Xunzhuo Oct 8, 2026
f3f050a
feat: simplify serving CLI and make replica placement explicit
Xunzhuo Oct 8, 2026
9ae3055
fix: keep release projections independent of runtime imports
Xunzhuo Oct 8, 2026
9509ce9
fix: show authorized native API example for engine startup
Xunzhuo Oct 8, 2026
137edbc
fix: isolate CI Python tooling and satisfy release checks
Xunzhuo Oct 8, 2026
09970c9
fix: preserve ownership of CLI startup projections
Xunzhuo Oct 8, 2026
a8f6838
fix: include Hub client in CLI reference dependencies
Xunzhuo Oct 8, 2026
73bee21
test(cli): isolate output validation from cached router images
Xunzhuo Oct 8, 2026
0975ecc
Merge main for System One integration regression
Xunzhuo Oct 8, 2026
2359e21
Fix System One authorization and restore routing regression contracts
Xunzhuo Oct 8, 2026
0be18b5
Preserve Playground sessions and complete dashboard workflow regressions
Xunzhuo Oct 8, 2026
04f1dd1
Preserve full-input signal contracts and align recipe evaluation
Xunzhuo Oct 8, 2026
aec6a92
Merge remote-tracking branch 'upstream/main' into xunzhuo/pytorchcon-…
Xunzhuo Oct 8, 2026
88f2b98
Merge remote-tracking branch 'upstream/main' into xunzhuo/pytorchcon-…
Xunzhuo Oct 8, 2026
1e42d41
Reconcile retained managed Postgres credentials during startup
Xunzhuo Oct 8, 2026
25ca3b6
Sort managed storage imports
Xunzhuo Oct 8, 2026
92fadea
Keep Engine lifecycle test ports within the stack range
Xunzhuo Oct 8, 2026
d6379ca
Reject oversized full-input embeddings before inference
Xunzhuo Oct 8, 2026
694fd5d
Budget CPU worker threads directly and preserve long-input probe sema…
Xunzhuo Oct 8, 2026
cc53318
Merge remote-tracking branch 'upstream/main' into xunzhuo/pytorchcon-…
Xunzhuo Oct 8, 2026
f763913
Describe generated probe contexts without unverified token counts
Xunzhuo Oct 8, 2026
29da47a
Allocate the runner CPU budget to serial full-context recipe checks
Xunzhuo Oct 8, 2026
7826594
Clarify runtime development installation and existing stack migration
Xunzhuo Oct 8, 2026
12141c6
Preserve authored preference execution contracts
Xunzhuo Oct 8, 2026
825522d
Honor declared Preview budgets in conformance deployments
Xunzhuo Oct 9, 2026
2eba45a
Clarify default startup and full-input model coverage
Xunzhuo Oct 9, 2026
e45e94e
Isolate no-route gateway contracts from default-provider fallback
Xunzhuo Oct 9, 2026
551e64d
Merge remote-tracking branch 'upstream/main' into xunzhuo/pytorchcon-…
Xunzhuo Oct 9, 2026
8caaedd
Link Chinese model guidance to the rendered long-input reference
Xunzhuo Oct 9, 2026
3987ddf
docs: clarify runtime calls and inference deadlines
Xunzhuo Oct 9, 2026
2c36e08
fix(runtime): keep offline decision services from blocking startup
Xunzhuo Oct 9, 2026
c08d8ae
test(runtime): query the reranker worker for direct score comparison
Xunzhuo Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,4 @@ paper/
perf/
src/training/model_classifier/verified_single_judge_*/
dashboard/frontend/node_modules/
dashboard/wizmap/node_modules/
dashboard/frontend/dist/
dashboard/wizmap/dist/
13 changes: 0 additions & 13 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,6 @@ updates:
applies-to: security-updates
patterns: ["*"]

- package-ecosystem: npm
directory: /dashboard/wizmap
schedule:
interval: weekly
day: monday
time: "04:00"
timezone: UTC
open-pull-requests-limit: 0
groups:
dashboard-wizmap-security:
applies-to: security-updates
patterns: ["*"]

- package-ecosystem: npm
directory: /website
schedule:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/check-generated.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,16 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Check Schema, OpenAPI, and CRD References
run: make config-schema-check api-docs-check docs-crd-check model-runtime-client-check
- name: Check Schema, OpenAPI, CRD, and Runtime References
run: make config-schema-check api-docs-check docs-crd-check model-runtime-client-check decision-runtime-catalog-check
- name: Record Generated Contract Evidence
env:
VERIFICATIONS: ${{ inputs.verifications }}
run: |
python3 -m pip install PyYAML==6.0.3
python3 tools/ci/workflow_evidence.py --verifications "$VERIFICATIONS" --id generated-contracts \
--check config-schema-check --check api-docs-check --check docs-crd-check \
--check model-runtime-client-check \
--check model-runtime-client-check --check decision-runtime-catalog-check \
--output .agent-harness/generated-contracts-result.json
- uses: actions/upload-artifact@v4
with:
Expand Down
7 changes: 7 additions & 0 deletions .github/workflows/recipe-conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,13 @@ jobs:
if: inputs.prebuilt-images
with:
images: '["vllm-sr"]'
- name: Allocate CPUs for serial long-context probes
if: matrix.shard == 'built-in-latest-mom-v1'
run: |
# This shard runs one probe at a time, including full-context embeddings.
cpu_threads="$(nproc)"
printf 'VLLM_SRUN_CPU_THREADS=%s\n' "$cpu_threads" >> "$GITHUB_ENV"
printf 'Serial long-context worker threads: %s\n' "$cpu_threads"
- name: Run maintained recipe probes
env:
RECIPE_CONFORMANCE_RECIPES: ${{ matrix.recipes }}
Expand Down
9 changes: 8 additions & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,13 @@ repos:
pass_filenames: false
files: ^(config/catalog/|config/recipes/built-in/|src/vllm-sr/cli/model_bundle\.py$|src/semantic-router/pkg/catalog/zz_generated_catalog\.go$|src/vllm-sr/cli/model_assets/latest/catalog\.yaml$|dashboard/frontend/src/generated/modelCatalog\.json$|website/static/model-catalog/catalog\.json$|tools/catalog/|tools/make/model-catalog\.mk$)

- id: decision-runtime-catalog-generated
name: decision runtime catalog generated projection
entry: make decision-runtime-catalog-check
language: system
pass_filenames: false
files: ^(src/model-runtime/vllm_srun/(registry/tables/\w+|systemone|families/decision1/(family|questions)|families/decision2/family|families/vela2/request)\.py$|src/model-runtime/vllm_srun/registry/releases\.generated\.json$|dashboard/frontend/scripts/generate-decision-runtime-catalog\.py$|dashboard/frontend/src/pages/decisionRuntimeCatalog\.generated\.json$|src/semantic-router/pkg/modelservice/decision_catalog\.generated\.json$|tools/make/dashboard\.mk$|\.pre-commit-config\.yaml$)

- id: cli-reference-generated
name: CLI command reference
entry: make docs-cli-check
Expand Down Expand Up @@ -111,7 +118,7 @@ repos:
language: system
require_serial: true
files: \.md$
exclude: ^(node_modules/|website/node_modules/|dashboard/frontend/node_modules/|dashboard/wizmap/node_modules/|bench/|e2e/config/models/|models/|vsr/|website/docs/api/crd-reference\.md$|CLAUDE\.md$)
exclude: ^(node_modules/|website/node_modules/|dashboard/frontend/node_modules/|bench/|e2e/config/models/|models/|vsr/|website/docs/api/crd-reference\.md$|CLAUDE\.md$)

# Yaml specific hooks
- repo: local
Expand Down
5 changes: 4 additions & 1 deletion bench/agent_crew/configs/crew.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,6 @@ routing:

global:
router:
auto_model_name: MoM

stores:
response_cache:
Expand Down Expand Up @@ -153,3 +152,7 @@ global:
model_ref: ""
model_id: ""
use_mmbert_32k: false

entrypoints:
- model_names: ["MoM"]
recipe: default
16 changes: 9 additions & 7 deletions bench/grounded_fusion/fusioneval/grounding_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,19 @@ func TestProduceArmKeepsRealAndPlaceboGroundingRequestLocal(t *testing.T) {
unblock := func() { releaseOnce.Do(func() { close(release) }) }
t.Cleanup(unblock)
var realCalls, forbiddenCalls atomic.Int32
forbidden := func(context.Context, string, string, string) ([]string, float32, error) {
forbidden := func(context.Context, string, string, string) (looper.GroundingEvidence, error) {
forbiddenCalls.Add(1)
return nil, 0, nil
return looper.GroundingEvidence{}, nil
}
real := func(ctx context.Context, _, _, _ string) ([]string, float32, error) {
real := func(ctx context.Context, _, _, _ string) (looper.GroundingEvidence, error) {
realCalls.Add(1)
startOnce.Do(func() { close(entered) })
select {
case <-release:
return []string{"unsupported"}, 0.25, nil
score := float32(0.25)
return looper.GroundingEvidence{Unsupported: true, Spans: []string{"unsupported"}, Probability: &score}, nil
case <-ctx.Done():
return nil, 0, ctx.Err()
return looper.GroundingEvidence{}, ctx.Err()
}
}
done := make(chan answerRecord, 1)
Expand All @@ -65,8 +66,9 @@ func TestProduceArmKeepsRealAndPlaceboGroundingRequestLocal(t *testing.T) {
require.True(t, placebo.GroundingPresent)
require.Len(t, placebo.Panel, 2)

other := produceArm(fusion, client, opt, it, entry, "C", &looper.GroundingBackends{Detect: func(context.Context, string, string, string) ([]string, float32, error) {
return []string{"unsupported"}, 0.75, nil
other := produceArm(fusion, client, opt, it, entry, "C", &looper.GroundingBackends{Detect: func(context.Context, string, string, string) (looper.GroundingEvidence, error) {
score := float32(0.75)
return looper.GroundingEvidence{Unsupported: true, Spans: []string{"unsupported"}, Probability: &score}, nil
}})
assertArmScores(t, other, 0.25)
unblock()
Expand Down
5 changes: 3 additions & 2 deletions bench/grounded_fusion/fusioneval/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ func run(opt options) error {
// given (seed, context, answer) but carrying no real signal. Mirrors the
// in-package test placebo so arm D weights on noise, isolating the score's signal.
func placeboDetector(seed uint64) looper.HallucinationDetectFunc {
return func(_ context.Context, contextText, _, answer string) ([]string, float32, error) {
return func(_ context.Context, contextText, _, answer string) (looper.GroundingEvidence, error) {
h := fnv.New64a()
var b [8]byte
binary.LittleEndian.PutUint64(b[:], seed)
Expand All @@ -255,7 +255,8 @@ func placeboDetector(seed uint64) looper.HallucinationDetectFunc {
_, _ = h.Write([]byte(answer))
// Deterministic seed for the placebo; the uint64->int64 wrap is harmless.
r := rand.New(rand.NewSource(int64(h.Sum64()))) //nolint:gosec // deterministic eval seed, overflow harmless
return []string{"placebo"}, float32(r.Float64()), nil
score := float32(float32(r.Float64()))
return looper.GroundingEvidence{Unsupported: true, Spans: []string{"placebo"}, Probability: &score}, nil
}
}

Expand Down
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_gpqa_omni.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1200s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -267,3 +264,7 @@ routing:
{{end}}

If this is a multiple-choice question, return exactly one final answer letter: A, B, C, or D. Do not include prose, labels, or punctuation.

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_hle_closed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1800s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -326,3 +323,7 @@ routing:
Explanation: {your concise reasoning}
Exact Answer: {your succinct final answer}
Confidence: {integer percentage between 0% and 100%}

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_hle_glm52.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1800s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -417,3 +414,7 @@ routing:
Explanation: {your concise reasoning}
Exact Answer: {your succinct final answer}
Confidence: {integer percentage between 0% and 100%}

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_hle_hybrid.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1800s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -428,3 +425,7 @@ routing:
Explanation: {your concise reasoning}
Exact Answer: {your succinct final answer}
Confidence: {integer percentage between 0% and 100%}

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_livecode_glm52_omni.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1200s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -516,3 +513,7 @@ routing:

If code is requested, return exactly one complete ```python code
block and no prose.

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1200s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -516,3 +513,7 @@ routing:

If code is requested, return exactly one complete ```python code
block and no prose.

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_livecode_omni.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1200s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -520,3 +517,7 @@ routing:

If code is requested, return exactly one complete ```python code
block and no prose.

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_scicode_omni.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1200s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -458,3 +455,7 @@ routing:
{{end}}
Return exactly one ```python code block and no prose.
entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
7 changes: 4 additions & 3 deletions bench/router_flow/configs/amd_auto_swe_glm52.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ listeners:
timeout: 1800s

global:
router:
auto_model_names:
- vllm-sr/auto
integrations:
looper:
endpoint: http://vllm-sr-envoy-container:8899/v1/chat/completions
Expand Down Expand Up @@ -479,3 +476,7 @@ routing:
the checked-out source. When ready to submit, the single command
must be exactly
`echo COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT && cat patch.txt`.

entrypoints:
- model_names: ["vllm-sr/auto"]
recipe: default
Loading
Loading