docs: keep a real tuned roster, and the script that sizes it - #55
Merged
Conversation
Two additions, both about the same problem: a working config is mostly numbers somebody had to measure, and none of that survived anywhere durable. examples/full-roster.yaml is a real thirteen-lane roster. The annotated template stays as it is -- it documents options this roster does not use -- but a template cannot show what a tuned config looks like after the measurements are in, and the comments carrying those measurements are the point of the file. Sanitised: a local server address and a filesystem path are placeholders. key_entry values are kept, since they name a `pass` entry rather than holding one, and the naming is a convention rather than a secret. scripts/measure-reasoning.py is how those numbers were arrived at. On an OpenAI-compatible endpoint max_tokens caps reasoning and answer together, so a model whose thinking overruns it returns 200 with empty content and finish_reason "length" -- a lane that delivered nothing, for a reason the response never states. Worse, the cost is a distribution: one lane's thinking ranged 20 to 21606 tokens across runs of a single unchanged brief. Sizing off one observation is how 4000 was first picked, and it was wrong. The script takes several samples, reports the range, and says whether the configured max_tokens clears the worst one. That is the difference between a number and a guess, and it is reproducible now rather than living in a scratchpad that gets deleted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014kR9wKwm5sgUQSs5uxbAzv
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Two additions, both about the same problem: a working config is mostly numbers
somebody had to measure, and none of that survived anywhere durable.
examples/full-roster.yamlA real thirteen-lane roster. The annotated template stays exactly as it is — it
documents options this roster doesn't use (
rpm,strip_prefixes,scrub_env,synthesizers,price_per_mtok,budget_usd) — but a template can't show whata config looks like after the measurements are in, and those comments are the
point of the file:
clilane pins--model, because without it they silently run the CLIdefault and two lanes reported different models while running the same one
:freelanes are deliberately not provider-pinned; pinning a:freevariant returns 429 where the identical unpinned call succeedsmax_tokenson the reasoning lanes is sized from measured distributionsSanitised: a local server address and a filesystem path are placeholders.
key_entryvalues are kept — they name apassentry rather than holdingone, and the naming is a convention, not a secret. Verified no internal
addresses, home paths, or secret-shaped strings survive, and it loads and lists
13 lanes.
scripts/measure-reasoning.pyHow those numbers were arrived at. On an OpenAI-compatible endpoint
max_tokenscaps reasoning and answer together, so a model whose thinking overruns it
returns 200 with empty content and
finish_reason: "length"— a lane thatdelivered nothing, for a reason the response never states.
Worse, the cost is a distribution:
Sizing off a single observation is exactly how
4000was first picked, and itwas wrong. The script takes several samples, reports the range, and says whether
the configured
max_tokensclears the worst one — the difference between anumber and a guess, and reproducible now rather than living in a scratchpad that
gets deleted.
Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/