Skip to content

Commit 8beb750

Browse files
committed
Release 0.7.13 v2 routing assets and quality priors
1 parent 30173e7 commit 8beb750

24 files changed

Lines changed: 3016 additions & 234 deletions

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ spending.json
4444
bench/results/
4545
bench/data/*.generated.jsonl
4646

47+
# Local experiment notes
48+
ROUTING_EXPERIMENT_REPORT.md
49+
4750
# ─── v2: internal design docs (not user-facing) ───
4851
docs/uncommon-route-v2-architecture.md
4952
docs/telemetry-design.md

openclaw-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@anjieyang/uncommon-route",
3-
"version": "0.7.12",
3+
"version": "0.7.13",
44
"description": "OpenClaw plugin for UncommonRoute, the local LLM router that cuts premium-model spend",
55
"type": "module",
66
"main": "src/index.js",

openclaw-plugin/src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import { spawn, execSync } from "node:child_process";
1717
import { setTimeout as sleep } from "node:timers/promises";
1818

19-
const VERSION = "0.7.12";
19+
const VERSION = "0.7.13";
2020
const DEFAULT_PORT = 8403;
2121
const DEFAULT_UPSTREAM = "";
2222
const HEALTH_TIMEOUT_MS = 15_000;

pyproject.toml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uncommon-route"
3-
version = "0.7.12"
3+
version = "0.7.13"
44
description = "Local LLM router that cuts premium-model spend with adaptive 3-tier routing, OpenAI + Anthropic compatible"
55
requires-python = ">=3.11"
66
license = "MIT"
@@ -30,6 +30,7 @@ dependencies = [
3030
[project.optional-dependencies]
3131
v2 = [
3232
"sentence-transformers>=2.2",
33+
"xgboost>=2.0",
3334
]
3435
dev = [
3536
"build>=1.2",
@@ -55,7 +56,16 @@ build-backend = "setuptools.build_meta"
5556
include = ["uncommon_route*"]
5657

5758
[tool.setuptools.package-data]
58-
uncommon_route = ["router/model.json", "router/benchmark_seed.json", "static/**/*"]
59+
uncommon_route = [
60+
"router/model.json",
61+
"router/benchmark_seed.json",
62+
"static/**/*",
63+
"data/v2_splits/seed_embeddings.npy",
64+
"data/v2_splits/seed_labels.json",
65+
"data/v2_splits/embedding_classifier.pkl",
66+
"data/v2_splits/meta_scaler.pkl",
67+
"data/v2_splits/calibration_params.json",
68+
]
5969

6070
[tool.pytest.ini_options]
6171
testpaths = ["tests"]

tests/test_ensemble.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ def test_result_has_method():
4747
assert result.method in ("direct", "conservative")
4848

4949

50+
def test_single_low_confidence_vote_does_not_become_certain():
51+
votes = [TierVote(tier_id=3, confidence=0.30)]
52+
ens = Ensemble(weights=[1.0])
53+
result = ens.decide(votes)
54+
assert result.confidence == 0.30
55+
assert result.raw_confidence == 0.30
56+
assert result.method == "conservative"
57+
58+
5059
def test_conservative_fallback_caps_at_tier_3():
5160
"""When best_tier=3 but confidence is low, conservative path should cap at 3 (not 4)."""
5261
# tier 3 wins the vote but with only ~52% confidence → below conservative threshold

0 commit comments

Comments
 (0)