From AI Code Review to Executable Evidence: What Meta’s Just-in-Time Testing Changes

Meta’s latest deployment report points to a different role for generative AI in software engineering: constructing tests that expose a change in behaviour before code reaches users. Its significance lies in how machine-generated evidence, human judgement and the cost of false alarms are brought together

A warning about faulty software is easy to generate and difficult to evaluate. A language model can offer a convincing account of why a change might break something, yet the engineer receiving that account must still discover whether the danger is real. The difference between a plausible objection and an executable example is therefore substantial. One asks a colleague to investigate a suspicion; the other supplies a way to reproduce an observed behaviour. As AI becomes more deeply involved in writing code, that distinction matters to the people responsible for deciding whether software is ready to reach its users.

In an engineering update published on 29 October 2026, Meta reports that its Catching Just-in-Time Tests, or JiTTests, are now deployed in its infrastructure. The system generates executable tests around proposed code changes and filters candidate failures before contacting engineers. Meta reports that 589 engineers engaged with the results and that their feedback indicated a 60% true-positive rate. These are company-reported operational findings, not an independently reproduced industry benchmark. Nevertheless, the announcement offers a concrete subject for analysis: using generative AI to produce inspectable evidence about software, while treating attention and trust as resources that must be managed as carefully as computation.

Why a failing test can be the useful output

The central distinction is explained in the researchers’ paper on just-in-time catching test generation. A conventional hardening test passes when it is created and protects against a future regression. A catching test is intended to fail on a proposed revision while passing on its parent. That contrast establishes a behavioural difference, but not whether the difference is undesirable. A change can deliberately alter an old behaviour. The paper separates candidate failures from confirmed faults precisely because execution cannot supply the missing product specification on its own.

Imagine an illustrative change to the rules governing access to a shared document. An automatically constructed test finds that an account can now retrieve information it could not retrieve before. This is valuable evidence: the developer can inspect the account, request and result. But perhaps the new permission is the feature being introduced, or perhaps the test has assumed an access rule that no longer applies. The execution result narrows the question without answering it completely. This is why the approach is more interesting than simply asking a model to sound confident about a vulnerability. It creates an artefact that another person can run, challenge and connect to the intended behaviour of the product.

The older idea beneath the new machinery

The intellectual background is mutation testing. In its September 2025 account of Automated Compliance Hardening, Meta describes deliberately introducing faults into source code and generating tests capable of detecting them. A mutation might weaken an access check or alter a condition, allowing a team to ask whether its tests notice. This is different from merely counting which lines execute. Code can run during a test without the test checking the property that matters. The earlier work also describes using language models to target more relevant mutations and generate corresponding tests, rather than relying only on generic syntactic changes.

That history helps explain where generative AI fits. A language model can propose a scenario, construct the surrounding code and adapt the test to local conventions. The execution environment then supplies a different kind of feedback: does the test run, and does it distinguish the two behaviours? The combination is potentially productive because generation and checking have different strengths. Yet a test that catches an invented fault is not automatically evidence that the same fault exists in the real application. The analytical step is to reconnect the generated scenario to the actual revision. Otherwise a system may produce an impressive volume of successful experiments about problems the developer never introduced.

The practical innovation is therefore a loop between a proposed explanation and an observable result. A model suggests where behaviour might go wrong, the machinery constructs a way to exercise that possibility, and the result becomes available for assessment. This is a narrower ambition than certifying a whole application. It can still be valuable, especially where the important question concerns a small change within a large and unfamiliar codebase. The useful unit of progress becomes a defensible finding attached to a particular revision, rather than a general claim that an AI system understands software.

Filtering changes the economics of assistance

Meta’s new report describes two complementary routes: one infers the intention of a change and targets associated risks, while another treats the change itself as suspicious and seeks distinguishing behaviours. Candidate results are assessed using both model judgements and rules. This design recognises a persistent difficulty with automated assistance: producing more findings can make a service less useful if the recipient must spend too much time rejecting them. The engineering challenge extends beyond generating a test. It includes deciding which results deserve to interrupt somebody who is already working.

False alarms have a cumulative cost. A single weak warning may take only minutes to dismiss, but repeated weak warnings can teach a team to ignore the channel altogether. Conversely, an excessively restrictive filter can conceal the very faults the system was introduced to uncover. The appropriate balance depends on severity, review capacity and the consequences of delay. A privacy-sensitive service may reasonably investigate a different set of suspicions from an experimental internal tool. There is no universal interruption threshold that can be inferred from the elegance of the underlying model. The organisation must decide what kind of evidence justifies attention and examine what its filtering rules leave unseen.

Reading the results without collapsing the timelines

The earlier paper analyses 22,126 generated tests and reports eight confirmed faults from 41 engineer contacts, including four judged capable of causing serious failures. It also reports an approximately 70% reduction in review load from automated assessment. These figures describe that study, rather than the later operational population. The October update separately attributes the prevention of 74 serious privacy bugs in the first half of 2026 to the system and reports a 20% reduction in privacy incidents of that severity. The two accounts provide a research baseline and a subsequent deployment claim; their denominators and observation periods should not be merged.

In particular, the later 60% true-positive figure should not be interpreted as the proportion of all software bugs discovered, or as proof that the system detects 60% of privacy vulnerabilities. It concerns the reported findings reviewed by engineers. Assessing overall effectiveness would require information about missed faults, changes never selected for testing and the distribution of severity. Equally, an observed reduction in incidents does not by itself isolate the contribution of one tool from other engineering improvements. Those qualifications do not invalidate the reported experience. They identify what additional evidence a different organisation would need before using the same numbers to justify an investment or a safety claim.

What another engineering team would have to build

This announcement describes Meta’s internal deployment, rather than establishing the availability of a ready-made public service with the same results. Recreating the approach elsewhere would involve much more than choosing a capable coding model. Tests need an environment in which dependencies can be installed, data controlled and relevant behaviour exercised consistently. A candidate failure is difficult to interpret when network availability or an unstable fixture can change the outcome between runs. A reproducible test environment is therefore part of the evidence, not merely a supporting convenience. Without it, the engineer receives another ambiguous warning wrapped in the appearance of an experiment.

There is also an important boundary around what generated code may do. An organisation exploring this approach would need controlled execution, suitable handling of sensitive source material and restrictions on credentials and external effects. These are implementation implications, not a claim about undisclosed details of Meta’s setup. The same discipline should extend to evaluation: record what was tested, why it was selected, what the assessor concluded and how the engineer resolved the finding. That record makes it possible to distinguish an improving system from one that simply produces more activity. It also gives teams a way to learn whether particular classes of faults remain poorly covered.

A more useful ambition for AI in engineering

The broader opportunity is to make software assurance keep pace with software generation. If developers can produce changes faster, a review process that depends entirely on reading more text will come under pressure. Executable counterexamples offer one way to focus judgement on something concrete. They do not replace design reviews, security analysis, integration testing or observation after release. Each of those practices asks questions that a narrowly constructed test may miss, including whether an entire feature is appropriate and how multiple services behave together. The additional layer is useful because it asks a specific question at a consequential moment: what does this proposed change actually do differently?

Meta’s report is most valuable when read as evidence of that direction, with the limits of a first-party deployment account kept visible. Generative AI supplies hypotheses and test code; execution constrains some of its speculation; people still decide what the behaviour should be. That arrangement offers a more grounded measure of progress than the fluency of an automated review comment. The next step for the field is not merely to generate larger numbers of tests, but to demonstrate that well-targeted, reproducible findings prevent meaningful failures at an acceptable cost. In that setting, an AI assistant earns trust through the quality of evidence it places in front of an engineer.

Image: Programmer writing code with Unit Tests by Joonspoon, CC BY-SA 4.0. Illustrative photograph; it does not depict Meta or JiTTests.