Conversation
A report says which prompts passed and nothing about what was grading them. `model` in the meta block is the alias the caller asked for, and the target behind `opus` moves; the CLI that discovers and activates a skill updates on its own schedule and is not recorded at all. Two runs a week apart can disagree and the artifacts hold nothing that separates a skill getting worse from a dependency that changed. Three fields, taken where they are already free: the engine as a named constant, the CLI's own version, and the model the API actually served, read out of the preflight call that every graded run already pays for. The preflight reports usage per model rather than naming the one that ran, and bills auxiliary work to a second model in the same block, so the alias that was asked for is what picks the right entry. Signed-off-by: John Lybeck <john.lybeck@amd.com>
The extraction is the part that can be quietly wrong. A preflight result reports usage per model rather than naming the one that ran, and the CLI bills auxiliary work to a second model in the same block, so reading the first entry reports a model the run never asked for. That is not a hypothetical: it is what the first version did against a live API. Eleven cases covering which entry an alias claims, the canonical name winning over the key it was billed under, the fallback when no alias was given, output that names no model at all, an absent CLI, and the three fields arriving in every report. Signed-off-by: John Lybeck <john.lybeck@amd.com>
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.
Summary
metablock of every routing and behavioral report:engine,agent_cli_version, andmodel_resolved. New helpersagent.cli_version()andagent.resolved_model(), joined bycli._provenance()and splatted into both meta dicts.modelis the alias the caller asked for, and the target behindopusmoves. The CLI that does the discovering and activating updates on its own schedule and is not recorded at all. Two runs a week apart can disagree and the artifacts hold nothing that separates a skill getting worse from a dependency that changed.What it looks like
Before, two reports a week apart:
After:
Same model, new CLI build, so the CLI is where to look.
Where each field comes from
engineis a constant. There is one engine, and naming it means a reader does not have to date a report to work out what graded it.agent_cli_versionisclaude --version, cached for the process. One subprocess, no tokens.model_resolvedis read out of the preflight call every graded run already pays for, so it costs nothing. It isnullwhen--skip-preflightwas passed, which is honest: nothing spoke to the API, so nothing knows.The preflight result reports usage per model rather than naming the one that ran, and the CLI bills auxiliary work to a second model in the same block (a run asking for
sonnetcan come back with a session-title model listed beside it). The alias that was asked for is what picks the right entry; with no alias, the entry that did the most work.Test plan
TestARunRecordsWhatProducedIt. Full suite 237, green onpython -m unittest discover -s tests -t ..gpt-5.5for a run that asked forsonnet, against a live API. Reverting the fix with the tests in place turns that test red and nothing else, so it is pinned to the behaviour rather than to the shape of the code.skillscope routing --skills-dir 'skills/*' --routing-room all --only finetune-on-laptop --model sonnet, meta block as shown above.modelUsage, an empty one, a list where an object belongs, and unparseable output. All degrade tonullrather than raising.