Repository navigation
docs(specs): model routing analytics design - #69507
SivaKesava1 with Copilot wants to merge 3 commits into
Conversation
Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
…ribution in analytics design Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
|
Thanks, this is a solid design. A few corrections from the routing side:
|
|
@rabeckett could you review this design for the model routing analytics page? It can't add you as a requested reviewer (read access), so tagging you here. The routing-side corrections are in the comment above. |
|
I think this probably goes in cao |
…ero-cost AWF-local requests Co-authored-by: SivaKesava1 <11771739+SivaKesava1@users.noreply.github.com>
Done in e72dfaa (0.2.0, doc only):
Gap you should know about: request records don't carry an error code today. The code only appears on the run's failure record, which has no |
Design proposal for a "Model routing" analytics page that reads only unified session files (
usage/aw_session.jsonl). It covers views, exact metric definitions with the event and field each reads, and a proposed runner- or proxy-written record for each data gap. This PR adds onlydocs/src/content/docs/specs/model-routing-analytics.md. It does not change the page, the collector, AWF, or other specs.Reader rules (
MRA-nnn)firewall.*,model.inventory) come first, thenworkflow.info.model_routing.outcomeis advisory and never decides state, pick, or attribution.workflow.info.modelRouting.statuscan disagree with the proxy. Thecopilot-budget-exhausted-steeringfixture reportsrejected/harness_selection_mismatchfor a run the proxy recorded as selected and then budget-failed.["endpoint"]deviations are normalized belowmodel-routing/v0.28.39. Unknown events and fields are ignored.firewall.token_usagewithusage.report, cumulativetotalAic, andagentMetricssnapshots.Run model
selected→selection_failed→harness_reported→unrouted/configured_unrecorded(from proposedmodel.config) →unrouted_inferred→unknown. Proxy evidence wins over configuration; a disagreement is flagged.purpose), evals, classifier, sub-agent exact, sub-agent correlated, main agent, agent not split, unattributed. Cost is complete only when the accounting source is present, every record hasaic, and every request record has an accounting record.Views
Adoption, decisions (pick stability, including within each classifier label cell), cost (main agent, sub-agent by definition, classifier, detection, routed vs. unrouted), deviations, failures (exit 78, budget, steering, upstream errors, unavailable models), outcomes (success rate and cost per success by pick within a label cell), and the single-run drill-down. A table shows what each view can show on current data.
Data gaps
model.configfromaw_info.jsonranked_choicesetc.; the collector drops them. Predictions don't exist at runtime (tables are ordered identities only)predicted_success/predicted_aic/excluded_choicesrouter.versionis the package version; table identity is missing; classification records have norequestIdrouter.image,router.tables.*, classificationrequestIdevaluate_outcomes.cjsresults never reach a session;pendingitems are never re-checkedsafe_output.outcome; per-item re-evaluationfirewall.event, but the error code is lostfirewall.upstream_errorwith identifier-onlyerrorCode/errorType/errorParammodel.baseline_estimaterepriced viacomputeInferenceAICrouting_models: nullrejects the whole snapshot, andmodels: null→[]losesconfigureddetectionworkflow.info.engineHarnessx-awf-callerheader aspurpose/agentName, labelled caller-declaredstatus,unavailable, and endpoint fields are dropped by the projectionworkflow.infoFor reviewers
rejectedrequest incurs no AIC? Until confirmed, such runs are treated as partial cost.