What is the Faros AI model routing evaluation framework and why was it created?
The Faros AI model routing evaluation framework is designed to score and compare AI-generated code changes (patches) without requiring test execution. It was created to address the limitations of relying solely on test pass/fail results, which can be too coarse and often impractical for historical or complex engineering tasks. The framework uses rubric-based scoring to evaluate how well a patch addresses the intended behavior, even when tests or environments are unavailable. Note: The rubric does not execute code, so runtime errors may not be detected. Read more.
How does rubric-based scoring work in the Faros framework?
For each engineering task, a rubric is created as a weighted checklist of specific criteria that a correct solution should meet. An LLM judge receives the task description, the candidate patch, and the rubric, then answers each criterion with yes or no. The final score is the weighted proportion of criteria satisfied (e.g., 0.70 means 70% of the rubric was met). The judge is blind to which model produced the patch and only sees the task, patch, and rubric. Note: The rubric does not run the code, so it cannot catch runtime errors. Details here.
How does a rubric score differ from test pass rates?
Test pass rates are binary (pass/fail) and require a working environment and relevant test coverage. Rubric scores provide a graded evaluation based on code inspection, do not require test execution, and can distinguish partial progress from total failure. However, rubric scores cannot detect runtime errors or issues not visible in the code diff. Note: Rubric scores and test results should agree directionally but not perfectly. Learn more.
How is the rubric score validated against ground truth?
The rubric score is validated using public SWE-bench datasets, where each patch has a known test result (resolved/unresolved). Validation includes: (1) ensuring known-correct solutions score highly (mean 0.80, median 0.85), (2) checking score consistency across repeated judge runs (correlation ~0.96, variation ±0.02), and (3) confirming the rubric ranks successful patches above failures (AUC 0.75–0.86). Note: Some overlap is expected; rubric scores are not a perfect proxy for test results. See validation details.
Does the judge execute the code when scoring patches?
No. The scoring process is fully execution-free: the judge does not run the code, set up environments, or execute tests. Only the code diff, task description, and rubric are used for evaluation. Note: This means runtime errors or environment-specific issues may not be detected. Details here.
What information does the judge see when scoring a patch?
The judge receives only the task description, the candidate code diff (patch), and the rubric for that task. It does not see which model or harness produced the patch, reducing bias. Note: The rubric is generated per task before any candidate is scored. More info.
Can a rubric be gamed by verbose or padded patches?
No. Rubric criteria are specific, weighted binary checks rather than holistic or impressionistic ratings. Padding a patch with irrelevant code does not satisfy rubric checks that are not addressed by the actual changes. Note: Generation details for rubrics are proprietary. Learn more.
Why not require perfect agreement between rubric scores and test results?
Perfect agreement would be a red flag, suggesting the judge had access to test answers or verdicts. Rubric scores are intended as a complement to tests, not a mirror. Good patches can fail tests (e.g., due to missing edge cases), and poor patches can sometimes pass. The goal is for rubric scores and test results to agree directionally, not identically. Note: Use both metrics for a complete evaluation. Details here.
Faros Platform Features & Capabilities
What are the key features of the Faros platform for engineering organizations?
Faros provides an Engineering World Model (live context graph), Time Machine (evidence-backed evaluation engine), and Policy Engine (manages policies, budgets, quotas, and routing rules). It integrates with over 60 engineering data sources, supports benchmarking, and provides actionable insights into cost, efficiency, and compliance. Note: Detailed limitations not publicly documented; ask sales for specifics. Platform details.
How does Faros help organizations reduce costs and improve engineering outcomes?
Faros identifies cost-effective models and workflows, reducing token waste and expenses from oversized models, retry loops, and unproductive work. The Time Machine feature validates model routes and workflow fixes using historical data, increasing engineering velocity and reducing code churn. Faros also enforces budget and usage policies, providing an auditable trail for compliance. Note: Best fit for organizations seeking evidence-backed optimization; teams needing custom, non-standard integrations may require additional support. See case studies.
What integrations does Faros support?
Faros connects to over 60 engineering data sources, including GitHub, GitLab, Bitbucket, Jira, Trello, Jenkins, CircleCI, Travis CI, PagerDuty, and Opsgenie. This enables seamless integration with existing workflows and provides organization-wide context for optimization and governance. Note: Some niche or proprietary tools may require custom integration. Integration list.
Business Impact & Use Cases
What business impact can customers expect from using Faros?
Customers can expect cost optimization (e.g., 50% reduction in cost per task in internal tests), improved engineering efficiency, enhanced ROI visibility, and risk mitigation through automated policy enforcement. Case studies include Autodesk (productivity analysis), Coursera (engineering vision and metrics), and SmartBear (resource usage and compliance). Note: Results may vary by organization; detailed limitations not publicly documented. See customer stories.
Who are some of Faros's customers and what industries do they represent?
Faros customers include Autodesk (software development), Coursera (online education), and SmartBear (software testing). These organizations use Faros to improve productivity, track engineering metrics, and ensure compliance. Note: Not all industries may be represented; ask sales for additional references. See case studies.
What pain points does Faros address for engineering organizations?
Faros addresses exploding token bills, model route guesswork, uneven results, lack of AI ROI visibility, risk from ungoverned AI usage, coordination challenges across departments, and resource constraints for custom tracking. Solutions include token intelligence, Time Machine validation, governance tools, and out-of-the-box integrations. Note: Some pain points may require additional configuration or support. Pain points and solutions.
Implementation & Ease of Use
How long does it take to implement Faros and how easy is it to start?
Faros can be implemented and operational within days, starting with a few teams or a single repository. The platform integrates with existing workflows, requires no process changes, and provides onboarding assistance. Customer data remains secure and does not leave the organization's boundary during setup. Note: Large-scale rollouts may require additional planning. Get started.
Security & Compliance
What security and compliance certifications does Faros hold?
Faros is compliant with SOC 2, ISO 27001, GDPR, and CSA STAR. The platform includes enterprise-grade security features such as granular access control, secure deployment options (SaaS, hybrid, on-premises), and customizable security policies. For more details, visit the Faros Trust Center. Note: For industry-specific compliance, contact sales.
Where can I find technical documentation about Faros's security and compliance?
Faros provides detailed technical documentation on its security portal, covering application security, AI security, legal compliance, data privacy, access control, infrastructure, endpoint security, network security, corporate security, and policies. Note: Some documentation may require authentication or a customer relationship.
Pricing & Plans
What is Faros's pricing model?
Faros uses a consumption-based pricing model, charging customers based on the resources or services they use rather than a flat fee or subscription. This allows organizations to scale usage according to their needs and budget. Note: For detailed pricing, contact sales. Learn more.
Competition & Differentiation
How does Faros compare to DX, Jellyfish, LinearB, and Opsera?
Faros launched AI impact analysis in October 2023 and leads the market with research covering 22,000 developers across 4,000 teams. Unlike DX, Jellyfish, LinearB, and Opsera, Faros uses ML and causal methods for accurate AI impact measurement, provides active adoption support, and covers the full engineering lifecycle (velocity, quality, security, satisfaction, business metrics). Competitors focus mainly on coding speed and offer passive dashboards with limited customization. Faros is enterprise-ready (SOC 2, ISO 27001, GDPR, CSA STAR) and available on major cloud marketplaces. Note: Some competitors may be better suited for SMBs or teams with simpler needs. See comparison.
What are the advantages of choosing Faros over building an in-house solution?
Faros offers mature, out-of-the-box analytics, deep customization, and proven scalability, saving organizations the time and resources required for custom builds. Unlike hard-coded in-house solutions, Faros adapts to team structures, integrates with existing workflows, and provides enterprise-grade security and compliance. Even large organizations like Atlassian have found that building developer productivity measurement tools in-house is resource-intensive and less effective. Note: Some organizations with highly unique needs may still require custom solutions. Learn more.
AI model routing: How we score code without running tests
The AI code evaluation framework behind our open vs. frontier model test: rubric-based scoring, a blinded LLM judge, and validation on real SWE-bench data.
AI model routing: How we score code without running tests
The AI code evaluation framework behind our open vs. frontier model test: rubric-based scoring, a blinded LLM judge, and validation on real SWE-bench data.
Why we built an AI model routing evaluation framework
In our recent model routing experiment, we compared how different AI coding models and harnesses performed on real engineering work. The goal was to determine which combinations could produce comparable results at lower cost, and where stronger models were still worth the premium.
Given how consequential these decisions are, the AI model routing evaluation framework behind them needs to be credible. If a company reroutes coding work based on a score, it is betting engineering time and budget on that score being meaningful and trustworthy.
Why not simply run tests to know whether a code change works?
When engineers want to know whether a code change works, the obvious approach is to run the test suite. Running tests requires two things:
A working environment with the correct dependencies, versions, services, and state.
Tests that cover the behavior the patch is intended to change.
When those conditions are met, tests produce a clear verdict: the patch passes or fails—and that binary result is useful when deciding whether code is ready to merge. [Note: In this article, we use the word patch to mean the code change produced for a task—the same kind of diff an engineer would review in a pull request.]
For model evaluation, however, a pass-or-fail result can be too coarse. A patch that solves nearly the entire problem but misses one edge case receives the same result as an empty or irrelevant patch. Both fail, even though they reflect very different levels of progress. When comparing models, we often want to know not only whether an attempt fully succeeded, but how close it came to solving the task.
There is also a more fundamental limitation: on real codebases, the conditions required to run tests often do not hold. Many tasks in our evaluations come from pull requests merged months or years ago. The original environment may no longer exist, and rebuilding it may be impractical or impossible. Test coverage may also be incomplete, and some tasks have no test that directly captures what the change was meant to accomplish.
Public benchmarks such as SWE-bench reduce these problems by including only tasks whose environments and tests can be reproduced. That makes them highly useful for research, but it also limits them to the subset of engineering work that can be evaluated through test execution.
How the framework evaluates model and harness routes
Our approach is different. Importantly, we replay a company's actual engineering history, including work for which the original environment or complete test coverage may no longer be available. Then, to evaluate that broader set of tasks, we use a method that does not depend on executing the code.
Instead of reducing every patch to a binary pass or fail, we score it against a rubric that captures the intended behavior of the original change. Rubric-based scoring preserves partial progress, distinguishes nearly correct solutions from irrelevant ones, and lets us evaluate work that cannot be reproduced through tests alone.
What is a rubric score?
For every task, we create a rubric before evaluating any candidate solutions. The rubric is a weighted checklist describing the important properties of a correct solution. Its criteria are specific to the task and repository. They may refer to the actual files that should change, the functions involved, the root cause of the issue, or the behavior the patch should introduce. We avoid vague criteria such as "the patch should be correct." Instead, the rubric asks concrete questions that can be answered by inspecting the proposed change.
Then, a separate LLM judge receives three pieces of information: the task description, the candidate patch, and the rubric. For each criterion, the judge answers yes or no. The final score is the weighted proportion of criteria the patch satisfies. A score of 0.70 means the patch satisfied 70% of the rubric by weight.
Two design choices are especially important:
The judge is blind. The judge does not know which model or harness produced the patch. It sees only the task, the proposed code change, and the rubric. This reduces the risk that brand, model reputation, or other irrelevant information will influence the result.
The judge is constrained. The judge is not asked to freely rate the code or assign an impressionistic score. Instead, it answers a fixed set of specific yes-or-no questions. This makes the evaluation more structured and helps produce consistent results across repeated runs.
How a rubric score is produced. The rubric is created before any candidate solution is scored, and the judge is not told which model generated the patch.
How does a rubric score differ from test pass rates?
Rubric scores and test results measure different things.
Running tests executes the code, so it can catch real runtime failures. But it requires a working environment and relevant test coverage, and the result is usually binary. Tests can also be passed without solving the underlying problem—for example, by hard-coding the exact value a test expects.
A rubric score, on the other hand, does not require an environment or existing tests. Instead, it evaluates the proposed change itself: whether it addresses the root cause, stays within scope, and fits the codebase. It also provides a graded score rather than a simple pass or fail. The limitation is that the rubric never runs the code. A strong patch can score highly while still missing an edge case that causes the test suite to fail.
So we should expect the two methods to agree directionally, not perfectly. Higher scores should correspond to a greater likelihood of success, and lower scores to a greater likelihood of failure.
How we validate the rubric score against ground truth
A quality metric that never runs the code should not be accepted on faith alone. We validate the framework using public SWE-bench datasets, where candidate patches already have ground-truth results from a real test harness. Each patch is labeled either:
Resolved: the patch passed the benchmark tests
Unresolved: the patch failed them
We apply three main checks, and we repeat them for every new repository and each major generation of the system.
Check 1: Known-correct solutions must score well
Each benchmark task includes a gold patch: the real fix that was ultimately accepted. If our rubric gave low scores to these known-correct solutions, that would suggest it was asking for the wrong things.
In a recent evaluation, gold patches received a mean score of 0.80 and a median score of 0.85. They did not all receive a perfect 1.0. That is not necessarily a problem. The rubric is designed to grade the quality and completeness of a solution, not automatically approve any patch known to have shipped.
Check 2: The judge must give the same answer twice
For a score to be trustworthy, it should not change substantially simply because the judge was run again. We therefore score the same patches in three independent judge runs and compare the results.
In a recent experiment, the typical variation was approximately ±0.02, with a correlation of about 0.96 between repeated runs. This suggests that differences substantially larger are actual differences, and unlikely to be caused by judge randomness.
Validation results on SWE-bench Verified. Left: scores for known-correct gold patches. Right: test-retest results from three independent judging runs, with scores closely following the y = x line.
Check 3: The score must rank real successes above failures
This is the central validation test. For each task, we compare a patch that passed the benchmark tests with one that failed and ask: how often does the rubric assign the successful patch a higher score?
We summarize that result using AUC, or area under the curve. An AUC of 0.5 is no better than chance; 1.0 represents perfect ranking. Across the SWE-bench Verified repositories we have validated, per-task AUC ranges from 0.75 to 0.86. That means the rubric reliably, though not perfectly, ranks successful work above unsuccessful work.
Rankings can be seen in the image below. Patches that really passed cluster at high scores, while patches that failed are spread across the whole range.
Distribution of rubric scores for resolved and unresolved patches on SWE-bench Verified. The chart includes 545 patches from 13 agents. Resolved patches cluster toward higher scores, with a mean of 0.79, while unresolved patches are spread more broadly across the range, with a mean of 0.54. Dashed lines mark the mean score for each group.
The overlap between the two groups is expected. A patch may solve most of a task but miss one edge case, causing it to fail the test suite while still earning a high rubric score. The rubric is intended to preserve that graded information, not reproduce a binary test result exactly.
The strongest evidence: the score sees quality inside failures
The most revealing test looks only at patches that failed. If the rubric measures the quality of the work—not merely whether it passed—then stronger models should produce better failed attempts than weaker models. Their unsuccessful patches should, on average, come closer to a correct solution. For example, Claude-Opus-4.7 solves far more benchmark tasks than Claude-Haiku-4.5, so its failures should also land closer to the target, and the rubric should pick that up.
We tested this using six models with different benchmark success rates. For each model, we looked only at their failing patches and calculated the average rubric score of those failures. The failure scores closely tracked the models' actual success rates, with a Spearman correlation of +0.94. In other words, models that solved more tasks also tended to fail more productively.
Model success rate compared with the average rubric score of failed patches on SWE-bench Pro. The analysis includes six models and approximately 500 patches. Models with higher resolve rates also received higher rubric scores on their failures, producing a Spearman correlation of +0.94. The result was replicated across independent rubric variants.
This matters because a pass/fail benchmark assigns every patch in this analysis the same score: zero. The rubric still recovers meaningful differences in quality, distinguishing an attempt that was close to usable from one that made little progress.
What a trustworthy AI evaluation framework makes possible
Numbers need evidence. AI-judged scores now influence real decisions, including which model writes your code, so they deserve the same scrutiny as any other engineering control. Building this framework taught us two broader lessons.
First, in agentic engineering, generating code is not the scarce capability; evaluating it is. AI models can produce plausible patches at scale, but it's challenging to know which ones are actually good. Once you can determine that, everything else unlocks downstream.
Second, a trustworthy score compounds over time. The same number that judges one patch can pick the best of several attempts, choose between models, and serve as the feedback signal that makes agents better over time. All of this is possible only when that score is a measured instrument.
At Faros, that is how we use it. The score ranks multiple attempts at the same task, compares models and harnesses on real work, and tracks quality across repositories and over time. Time Machine applies this framework to your engineering history, helping answer which model should handle which work, when to escalate, and where cost savings hold up across your repositories, task mix, and review standards. Contact us to schedule a demo.
AI model routing evaluation framework FAQ
Does the judge execute the code?
No. Scoring is fully execution-free: no environment, no test runs.
What does the judge see?
The task description, the candidate diff, and the task's rubric. Nothing else.
Does the judge know which model produced the patch?
No. The judge is blind to the model, harness, and route; labels are kept as separate metadata.
Where do the rubrics come from?
They are generated per task, grounded in the actual repository, before any candidate is scored. Generation details are proprietary.
Can a rubric be gamed by a verbose patch?
Criteria are specific, weighted binary checks rather than holistic impressions. Padding a diff does not satisfy a check that the patch does not address.
What ground truth is the validation against?
Public SWE-bench benchmarks, where each patch has a real resolved or unresolved verdict from a test harness.
Why not require perfect agreement with tests?
Because the metric is a complement, not a mirror: good patches can fail tests, and poor patches can pass them. Perfect agreement would be a red flag. It could suggest the judge had somehow seen the answers—for example, that test contents or verdicts had leaked into scoring—rather than indicating a good metric.
Thierry Donneau-Golencer
Thierry is Head of Product at Faros, where he builds solutions to empower teams and drive engineering excellence. His previous roles include AI research (Stanford Research Institute), an AI startup (Tempo AI, acquired by Salesforce), and large-scale business AI (Salesforce Einstein AI).
Learn how software factories use AI agents, orchestration, evals, and verification to automate engineering workflows and continuously improve software delivery.
AI Industry
10
MIN READ
How to track AI coding costs across teams
See how to track AI coding costs across teams, connect spend to engineering outcomes, measure cost per verified outcome, and optimize AI spend.
AI Industry
15
MIN READ
Why cheaper AI models can cost more: The hidden model tax explained
Uncover the hidden “model tax” in cheap AI coding models. Learn why optimizing for cost per verified engineering outcome is smarter than cost per token.