Skip to content
Putting technology to work.
Insights to guide decisions and action.

Search articles

When AI-generated code is delivered: The "process" boundary drawn by 3 OSS cases

Table of contents · 7 items

When outsourcing custom development, have you ever asked during deliverable acceptance, "Does this code contain any parts generated by AI?" Most companies have not asked. And among those that have, many stall at the exact same hurdle: they lacked criteria to evaluate the answer they received.

When told "yes, we use it," they do not know whether that constitutes a problem. On the other hand, declaring an outright ban after the fact undermines the assumptions of the estimate. In the end, nothing is decided on the spot, and the identical question is repeated on the next project.

Several projects answered this question in rapid succession during the summer of 2026. Moreover, while appearing distinct on the surface, their ways of drawing the line are remarkably consistent.

Policies issued by three projects

OpenJDK released its policy widely in early April 2026, banning contributions containing content partially or wholly generated by large language models, diffusion models, or similar deep learning systems. Two reasons were cited. The first is review burden: code that appears plausible but is actually erroneous or difficult to maintain consumes limited review time. The second is safety and stability, grounded in the fact that the JDK underpins mission-critical systems. However, developers using LLMs for their own debugging or code comprehension is not prohibited.

In the Linux kernel, Greg Kroah-Hartman stated on August 3, 2026, a policy of generally rejecting patches created by AI/LLMs within the drivers/staging/ subsystem he manages. The sole exception is fixes for actual security issues. His reasoning was distinct: staging serves as a place for newcomers to learn the submission process—in his words, a "gym"—and a flood of LLM-generated patches undermines that purpose. Rather than code quality itself, the issue is that the training ground gets overwhelmed.

On August 5, 2026, five teams managing the compiler and standard library for Rust adopted an LLM usage policy for contributions to rust-lang/rust. Rather than an outright ban, this policy takes the form of permitting use for analysis and verification while strictly limiting generation.

What they share: dividing by process phase

Looking across all three, not a single one drew the line as a binary choice between banning and permitting.

ProjectRestrictedPermitted
OpenJDKSubmitting generated output to repositories or PRsUse by individual developers for debugging and reading
Linux drivers/staging/Submitting AI-generated patches (actual security fixes excepted)Use in other areas, including use by maintainers themselves
rust-lang/rust"Creation" via LLMs"Analysis" and "verification" via LLMs

The lines are drawn by process phase: permitting use on the side of reading, investigating, and verifying, while restricting use on the side of generating and submitting deliverables. This structure is common to all three.

Their rationales also align. The review burden cited by OpenJDK and the flood cited by GKH are different ways of describing the same phenomenon. As generation costs dropped, submission volume exceeded the processing capacity of the receiving side. What is restricted is not the technology, but the unverified volume pouring in.

This asymmetry manifests in the same way in internal development. Even if generation accelerates, the speed of review and verification does not change. Structurally, it is identical to the bottleneck examined in Review Cannot Keep Up with the Volume of AI-Generated PRs.

Diagram illustrating the common boundary across three projects: restricting generation and submission phases while permitting analysis, comprehension, and verification phases

Policies diverge even within the same company

There is another fact worth noting. While OpenJDK bans AI-generated contributions, GraalVM under the same Oracle umbrella permits them. Furthermore, Oracle co-founder Larry Ellison has publicly stated that AI models write code at the company.

While this can be seen as a contradiction, a different interpretation is far more useful in practice: even within the same organization, appropriate policies differ depending on the nature of the project. It is natural that acceptable risk levels differ between mission-critical infrastructure and experimental language runtimes.

The takeaway for commissioning clients is clear: attempting to formulate a uniform company-wide policy of "our company permits/bans AI-generated code" will inevitably strain somewhere. The unit of decision must be the system, and the evaluation criterion is what happens if that system fails.

Translating into acceptance criteria

Based on the above, here is a breakdown of what commissioning clients can realistically define:

  1. Define categories per system. Vary the depth of required verification between systems where downtime causes immediate business damage, such as mission-critical operations or billing, and internal support tools. Setting everything to the strictest benchmark directly inflates project costs.
  2. Define verification accountability rather than imposing bans. What works in practice is not interrogating generation methods, but clarifying that the contractor bears accountability for deliverable content. Whether written by humans or AI, code that fails to run is equally problematic.
  3. Do not allow review effort to be cut from estimates. When estimates are compressed on the grounds that generation has accelerated, what gets cut is almost always the verification phase. Deliverables with reduced verification manifest problems not immediately upon delivery, but several months later.

The third point is especially critical. Problems with AI-generated code are difficult to spot at delivery and surface six months later during maintenance. Passing acceptance inspection does not equate to confirmed quality.

Merely requiring disclosure does not work

Conversely, introducing an operational rule of "requiring declaration of AI-generated sections" in isolation rarely works. There are three reasons for this:

Declaration granularity cannot be defined. Does accepting several lines via autocomplete count as "AI-generated" alongside entire modules generated from prompts? Requesting declarations without clear boundaries yields answers devoid of useful information.

There are no verification methods. In practice, clients have virtually no way to verify whether declared details are accurate. Writing terms into contracts that depend on good faith fails when disputes arise.

Even when disclosed, evaluation criteria are lacking. Returning to our opening point, this is the biggest issue: if you have not decided what to look for when told "yes, we use it," asking serves no purpose.

What proves practical is requiring proof of verification rather than declarations of generation methods: whether records exist showing passage through static analysis and security reviews, and what scope tests cover. These are items that should naturally be expected for human-written code as well, and they can be evaluated regardless of AI generation. Methods for mechanically augmenting reviews are compiled in Automating Security Reviews for AI-Generated Code.

What to do next

Try categorizing the systems you currently outsource into two or three tiers based on the impact if they fail. Once categorized, the systems where you should require proof of verification will be determined automatically. Companies that stall trying to impose identical standards across all systems are skipping this step.

Then, when you receive your next estimate, check the breakdown of review and testing phases. With just that, meaningful discussions regarding the handling of AI-generated code can readily begin.

If you would like to consult on reviewing development structures or assessing existing system quality, we assist through GleamHub's Development, AI, and Automation Consultations. Because steps to take vary based on system architecture and your current team structure, please reach out for an individual consultation. Feel free to contact us via Contact Us.

Sources

Share this articleXFacebook
Kakeru Suzuki

Fascinated by the possibilities of technology, has had a deep interest in programming and digital art since student days

Turn this article's theme into your company's next step

Concrete steps forward for your organization.

We organize your desired architecture, legacy systems, and operational requirements to formulate your next steps toward execution.

  • Desired architecture
  • Integration with existing environments
  • Operational requirements
Consult on development & operations initiatives

You can consult with us from the initial conceptual stage. Details from this article will be carried over to the inquiry form.

Receive the latest articles by email