Nobody Decided Godot Had an AI Problem for Months. Then Somebody Finally Did.
The line between a risk and a rule
Godot’s new AI contribution policy was not an ethics decision. It was a decision about who owns a boundary that had been drifting since February.
Reviewer bandwidth was already an issue months before anyone treated it as one
A decision log has four fields: what was decided, why, who decided it, when
The same drift is available to a two-person team, just quieter and slower to show up
Earlier this week I picked apart a framework for classifying AI-touched work after it ships. Where the model touched the pipeline, how much it drove the output, what it was trained on, who stopped getting paid. Useful questions, all of them. All useful after the fact.
This one is about before the fact. About the version of this problem that shows up as a policy, or doesn’t, months before it shows up as a headline.
On 30 June, the Godot Foundation published a new contribution policy. The headlines called it an AI ban. It is not that, and the difference is the entire post.
If this is useful, there's more where it came from. Multiple free posts a week on game production, applied AI, leadership and how the sausage actually gets made.
Godot has been drowning in pull requests for years. Some of that is a good sign: more people using the engine, more people willing to contribute, a maintainer team cautious enough to resist feature creep. The Foundation says as much in its own announcement. But the backlog was never just enthusiasm. The number of qualified reviewers has stayed roughly flat while the number of PRs kept climbing, and reviewing a pull request has never gotten any cheaper. Writing one has.
That is the whole mechanism, and it is not specific to Godot. GitHub itself has shared figures showing site-wide merged pull requests growing from 25 million a month in January 2023 to 90 million a month in March 2026, a 3.6x increase in three years, and it just added PR rate caps of its own to cope with the same imbalance. Nobody’s reviewing capacity grew 3.6x in that time. The cost of submission collapsed. The cost of review did not move. Every open source project running on volunteer maintainers is sitting on the same unbalanced ledger, whether or not they have written a policy about it yet.
Godot’s maintainers noticed the imbalance long before June. Maintainer Rémi Verschelde said publicly earlier this year that AI pull requests were becoming, in his words, increasingly draining and demoralising. That is not a throwaway complaint. That is a maintainer naming a problem out loud, in public, months before the organisation did anything structural about it.
Here is the line from the Foundation’s own announcement that the whole post turns on.
“This reviewer shortage was already a problem, but it was one that we successfully ignored. We can no longer ignore it.” Godot Foundation
Read that again slowly. They are not saying the problem appeared in June. They are saying it existed earlier, they knew, and the organisation’s response for however many months was to successfully not deal with it. Successfully ignoring a problem is not the same as it not being a problem. It just means nobody paid the cost yet.
I’ve written before about the difference between a risk and an issue. A risk is something that might happen and needs mitigation. An issue is something that has already happened and needs a response now. Confusing the two is not a rare failure mode. It is close to the default setting for any team, studio, or foundation that would rather keep monitoring something than admit it needs a decision.
Godot’s own language gives away exactly when the crossover happened. A rising backlog you are cautiously optimistic about is a risk. A backlog that maintainers are calling draining and demoralising, in public, is not a risk any more. It is an issue wearing a risk’s clothing because issue means somebody has to act and risk means you can keep watching a little longer.
The gap between those two states, Verschelde’s comment earlier in the year and the Foundation’s policy in June, is the gap where the actual damage happens. Not the code quality damage, though that’s real too. The damage is to whoever was doing the reviewing during those months, absorbing a cost the organisation had not yet agreed to name.
This reads closer to a compliment than a criticism. Most projects never get to the point of writing the policy at all. They stay in the successfully ignored phase indefinitely, because naming an issue means somebody owns the response, and an unnamed risk requires nothing from anyone.
The thresholds that separate the two are not exotic. A backlog that has been growing for more than a quarter without a change in reviewer capacity has already failed the assumption it was going to resolve itself. A maintainer publicly describing the work as demoralising is not a mood, it’s a data point with a date on it. A concern raised in three separate maintainer discussions without a resulting decision has demonstrated, empirically, that discussion alone was never going to produce one. None of those thresholds are precise to the day. What they do is convert a feeling, this seems to be getting worse, into a trigger: when the condition is met, the conversation stops being optional.
Thirty-plus years of production work went into this. Most of it didn’t make the post. New posts every week. Free to read, free to subscribe.
What actually shipped on 30 June is worth reading as a decision, not a stance. Strip the headline framing and you get four things Godot’s maintainers actually decided.
Who counts as a new contributor. Anyone with three or fewer merged pull requests. Below that threshold, no new features or significant refactors without explicit maintainer permission. That is a specific, checkable line, not a vibe about trust.
What is still allowed. Code completion, regex help, debugging lookups, translation. All still fine. What changed is the requirement to disclose AI assistance in the pull request discussion itself, not bury it.
What is not allowed at all. Autonomous agents submitting PRs directly, and anything that reads as heavy AI generation the submitter cannot explain or defend under review. Violating the agent rule triggers an automatic ban, no appeal mentioned.
Human to human, always. AI-generated text in conversations with maintainers is out, on the basis that machine translation of something a human actually wrote is fine, but an AI standing in for the conversation itself is not.
Four decisions. Every one of them answers a specific question rather than gesturing at a value. That is what separates a decision from a stance, and it is the same distinction that matters on a project with two people instead of two hundred maintainers.
I’ve written about the decision log before: four fields, what was decided, why, who decided it, when. Run Godot’s policy through those four fields and it holds up cleanly. What: no autonomous agent PRs, disclosure required for assisted code, a new contributor threshold. Why: reviewer capacity has not scaled with submission volume, and it is undermining the mentorship pipeline the project depends on for future maintainers. Who: the Foundation board and maintainers, named as the decision owner in their own post. When: 30 June 2026, with an explicit note that the policy will be revisited as tools change.
That last part matters more than it looks. They did not write a permanent commandment. They wrote a decision with a date on it and an acknowledgement that the date might need revisiting. That is exactly what a decision log entry is supposed to look like, and it is exactly what most teams skip, because writing “we will revisit this” feels like admitting the decision might be wrong. It’s admitting the decision was made under current conditions, which is the only honest way to make one.
“Things change every day with respect to the current suite of AI tools available. We will continue taking a conservative approach in our policies towards them, but we will re-evaluate as things evolve.” Godot Foundation
That sentence is doing quiet, useful work. It converts a decision into a monitored condition rather than a fixed law, without letting the condition drift back into being nobody’s job to watch.
None of this requires two hundred maintainers or a foundation board to translate down to a two or five person team. The mechanism is identical at a smaller scale, just quieter, and quieter is exactly why it’s more dangerous.
Nobody on a three person indie team is going to write a formal contribution policy. What you actually need is one written line: what is AI allowed to touch on this project, and what is off limits. Not a philosophy. A specific answer for concept art, for dialogue, for code, for anything that ships. Dated. Owned by a named person, even if that person is you. Revisited when something changes, the same way Godot’s policy explicitly leaves room to.
Run it through the same four fields. What: AI-assisted concept work is fine for exploration, nothing generated ships without a named person redrawing or substantially reworking it by hand. Why: the team wants to be able to stand behind the art as authored, and a generated asset shipped with a light edit is a legal and reputational question nobody has actually answered yet. Who: the two of you, agreed on a specific Tuesday, not assumed. When: today’s date, with a note to revisit once either of you actually tests a shipping pipeline that changes the calculation. Four lines. It takes less time to write than this paragraph took to read, and it is the difference between a decision and an assumption nobody remembers making.
Without that line, the same drift Godot experienced happens by default, just without anyone noticing until it costs something. Someone generates a placeholder asset that quietly becomes the shipped asset because nobody said it couldn’t. Someone uses an agent to write a system nobody else on the team fully understands, and six months later the person who prompted it has moved on and nobody can maintain what’s left. The team was never against using AI. Nobody ever decided anything either way. The decision happened by accretion, the same way scope creep happens, one reasonable-seeming choice at a time, with nobody holding the line because nobody knew holding it was a job.
The Godot story is useful precisely because it is not about AI. It is about a review bottleneck that existed for months before anyone treated it as something requiring a decision rather than continued observation. Swap “reviewing pull requests” for “deciding what AI is allowed to touch on your project” and the shape is identical. The risk was there earlier than the response. It always is. The only real choice a team has is how long the gap between those two points is allowed to run.
Godot’s gap ran from at least February to the end of June. That is not a long gap by the standards of most projects that eventually address something like this. Most teams never write the policy at all. They keep calling it a concern, worth watching, until the cost shows up somewhere they can no longer pretend not to see it.
Write the line before that happens. It costs less now than it will later, and it will cost something either way.
If this changed how you think about even one thing, the next post might too.





