Skip to content

Wayfinder Router 2026.6.10 - the "feedback" release

Choose a tag to compare

@tcballard tcballard released this 29 Jun 17:04

This release is shaped by what you told us after the HackerNews soft launch. The headline is a new way to calibrate Wayfinder on your own traffic without grading every prompt by hand; around it is a hard look at how Wayfinder explains itself - a sharper README, honest answers to the questions the thread raised, and a written-down release process. The routing decision itself is unchanged: still computed instantly and offline, with no model call.

Label your own traffic, without grading every prompt

The hardest part of tuning a router is the labels - which prompts actually needed the expensive model? wayfinder-router judge answers that for you. It runs each prompt through both tiers and asks an automated judge "was the cheaper tier good enough to skip the dearer one?", recording the verdict as a label that calibrate already understands.

wayfinder-router judge prompts.jsonl --gold gold.jsonl

The built-in judge is a pure, deterministic text comparator - refusal/error detection, agreement, similarity - that abstains instead of guessing when it can't tell. And because a bad label quietly degrades live routing, a minted config is untrusted until it clears mandatory gates: judge-vs-gold agreement (Cohen's κ ≥ 0.6), cross-validated lift over the majority baseline, and a degenerate-collapse check. Miss any one and the command prints the confusion matrix and refuses to emit a config - your labels are still saved. Configs that pass carry a provenance banner: judge version, dataset hashes, and the gates they cleared.

A sharper story, honestly told

A reader called the README "slop-padded" - fair. It now leads with what Wayfinder actually is - one fast, offline hard-or-easy decision you compose a model-router behind - instead of saying "no model call" over and over before the fold; the operator settings moved to their own docs/gateway-config.md.

The FAQ grew honest answers to the rest of the thread: how context survives a model switch, why you usually shouldn't route inside an agentic coding harness, routing between behaviorally-different models, the "send to several models and compare" idea (that's the judge above), calling the routing decision without the gateway, and the context-loss tax of switching models mid-task.

The release process, written down

New RELEASE.md: the CalVer scheme, the single source of version truth, the cut checklist, and the tag-triggered PyPI publish - so every release goes the same way.

The decision is unchanged

The judge lives entirely in the calibration layer - it calls models to compare them, then hands plain labels to the offline calibrate step. The runtime routing decision stays byte-identical and model-free (WF-ADR-0001).

Upgrading

pip install -U "wayfinder-router[gateway]"

Fully additive: wayfinder-router judge is a new command (it drives your configured gateway models, hence the extra), and nothing about existing configs, clients, or the routing decision changes.

Full changelog: https://github.com/itsthelore/wayfinder-router/blob/main/CHANGELOG.md