Putting the cost log first is the right order, and logging cost per route is more useful than per model. One addition: also record cost per completed task, since a cheap route that retries three times can cost more than a pricier one that succeeds once. On caching, a cheap guard is a CI test that builds the request twice for different users and asserts the cached prefix is byte-identical, so a stray timestamp or reordered tool list gets caught before the cacheRead ratio quietly drops. Do you see the downgrade-by-route decision holding up when a route's input mix drifts, or would you re-run the eval on a schedule?