Skip to content

SchemaRouter 0.6.0

SchemaRouter 0.6.0 expands the 0.5 runtime-hardening baseline with three focused areas: bounded local/model-assisted decisions, operational inspection, and a substantial OpenAPI fidelity pass.

The release does not turn SchemaRouter into an agent framework. Orchestration, conversation, memory, graph control, and model-provider strategy remain application/framework concerns. SchemaRouter remains the typed tool-schema planning, validation, policy, and execution boundary.

Highlights

Local and provider-neutral decision backends

  • add optional local LayaDecisionBackend through schemarouter[laya];
  • support Laya automatic English/multilingual routing, explicit checkpoint selection, confidence abstention, CPU/CUDA/MPS device selection, requested/actual device reporting, and selective preload;
  • keep Ollama as an optional general local-LLM decision backend rather than a requirement;
  • document provider-neutral reuse of existing GPT, Gemini, Claude, or other hosted clients through ModelQueryAnalyzer and CallableDecisionBackend;
  • keep every decision backend bounded to locally authorized candidate IDs and local validation.

Live model/provider quality claims remain intentionally outside this release until workload-specific benchmark evidence is collected.

Operational inspection and dashboard

  • add read-only schemarouter inspect commands for persistent registries and run traces;
  • add live SchemaRouter.inspect() snapshots for analyzer, decision policy, execution policy, and actual trusted invoker bindings;
  • add a self-contained read-only HTML dashboard export;
  • keep arbitrary metadata, credentials, invoker objects, request/result payloads, and trace payload values out of the default observation surface;
  • add runnable dashboard examples and an in-document visual preview.

OpenAPI fidelity

0.6 substantially broadens the supported, fail-closed OpenAPI subset:

  • expose response oneOf / anyOf object fields to the planner while preserving composed runtime validation;
  • support bounded same-origin JSON Schema $id rebasing, nested virtual resources, and static $anchor resolution;
  • keep dynamic/recursive reference semantics fail-closed;
  • support strict discriminated oneOf request bodies as one typed root body;
  • support generic explicit JSON root bodies, including arrays, scalars, nullable roots, and non-discriminated compositions, without flattening incompatible variants;
  • preserve literal JSON null root bodies and fail closed on missing required root bodies;
  • normalize OpenAPI 3.0 nullable: true schemas into equivalent JSON Schema type unions;
  • serialize default OpenAPI parameter styles for path/header simple and query form, while unsupported styles and allowReserved=true remain fail-closed;
  • preserve timestamp-looking YAML scalars as JSON-compatible strings during OpenAPI ingestion.

Platform and CI

  • Python 3.10–3.14 and Windows remain required release gates;
  • Python 3.15 preview remains non-blocking;
  • package wheel/sdist, minimum-dependency, Pyright, coverage, docs, MCP, LangChain, LlamaIndex, Jev, Laya, and OpenTelemetry checks remain protected;
  • Laya CI now uses the CPU-only PyTorch wheel path to avoid unnecessary CUDA downloads;
  • public OpenAPI and OPTIMADE compatibility smokes are green before release.

Compatibility

0.6.0 intentionally removes no public API from 0.5.0. The project is still pre-1.0, so minor releases may add deliberate documented compatibility changes. New model-assisted and operational surfaces remain opt-in, and unsupported schema semantics continue to fail closed instead of being guessed.

Deferred to 0.7 development

The following are intentionally not release blockers for 0.6.0:

  • live GPT/Gemini/Claude/Ollama/Laya/Jev decision-routing performance evidence on the shared corpus;
  • standalone LangChain/LlamaIndex ecosystem publication and upstream inclusion work.

Those tracks require external providers, credentials, hardware, maintainers, or third-party review and will continue on the 0.7 development line.