On Mon, Sep 22, 2025 at 6:37 PM Daniel P. Berrangé <[email protected]> wrote: > On Mon, Sep 22, 2025 at 05:10:24PM +0200, Paolo Bonzini wrote: > > I have no QEMU example at hand, but let's look at a commit like > > https://github.com/bonzini/meson/commit/09765594d. Something like this > > could be plausibly created with AI. What I care about is: > > I'd agree it is something AI could likely come up with, given the > right prompt, but in terms of defining policy it conceptually > feels more like new functionality, mixed in with refactoring. > [...] > you wouldn't express the new class level properties, or the new > get_or_create_cfg code as an algorithmic refactoring. Those > are a case of creative coding.
Yes, I agree. Those are creative, and obviously not part of what the LLM can produce with a pure "refactoring prompt". In that commit, clearly, I hadn't made a strong attempt at splitting out new functionality and refactoring; I might even do that now. :) > When we talk about "limited / non-creative refactoring", my interpretation > would be that it conceptually applies to changes which could be describe as > an algorithmic transformation. This prompt and the resulting code feel like > more than that. The prompt is expressing a creative change, and while the > result includes some algorithmic refactoring it, includes other stuff too. > > Describing a policy that allows your meson example, in a way that will be > interpreted in a reasonably consistent way by contributors looks like a > challenge to me. I agree with your reasoning that the commit goes beyond the "no creative change" line, or at least parts of it do. Inadvertently, this is also an example of how the policy helps AI users follow our existing contribution standards. > On the flip side, you might have written the new property / getter method > manually and asked the agent to finish the conversion, and that would > have been acceptable. This is a can or worms to express in a policy. Yes, a better approach would have been to change the initializer and ask AI to do the mechanical parts. Something like, in a commit message: Note: after changing the initializer, the bulk of the changes were done with the following prompt: "finish this conversion - i want to track the PackageConfiguration object per machine, with pkg.cfg becoming pkg.cfg[MachineChoice.HOST]". Still, putting the two together follows the exception text encouraging "to not mix AI- and human-written code in the same commit, *as much as possible*". Again, this is just an example, and in practice the amount of non-creative refactoring would be much larger than the rest. Paolo
