We took one exterior image generated in Nuit and applied eight architectural edits to it, in sequence, three separate times — once through each of three editing engines. Every intermediate step was saved. The result is not a leaderboard. It is a demonstration that the two common approaches to AI image editing fail in different directions: full-frame prompt editing always makes a change but drifts away from your building, and mask-based inpainting holds the building but sometimes quietly declines to make the change.
This matters because iterating is the whole job. Nobody generates one image and stops. You generate a direction, then you change the roof, then the path, then the cladding — and by the fifth change you are looking at something that is technically your concept and visually somebody else’s. Understanding why that happens tells you how to work around it.
For the broader picture of holding a design together across many generations, see how to maintain spatial consistency in AI architecture generation. This article is narrower: what one long chain of edits does to a single image.
What did we actually test?
One seed image: an exterior of a glass cabin in a fir forest at dusk, 1408×768, generated in Nuit. Everything below starts from that same file.
Eight edits, applied in this order:
- Flat roof → pitched gable roof in dark standing-seam metal
- Wooden boardwalk → flagstone path
- Left glass gable-end → solid vertical timber cladding
- Add a slim dark metal chimney flue
- Add two exterior wall sconces beside the entrance
- Entrance door → oversized pivoting timber door
- Add a wooden slat pergola over the front deck
- Base under the cabin → solid natural stone plinth
The list is deliberately mixed. Five are replacements — swap the material or form of something already visible. Three are additions — put an object where there is nothing. That distinction turns out to be the most important variable in the test.
Three chains ran the same eight edits:
- SeedEdit 3.0 — prompt-only, full frame.
- Flux Kontext Pro — prompt-only, full frame.
- Recraft inpaint v3 — mask-based, one hand-drawn mask per region.
Each edit was applied to the previous output of that chain, not to the original. That is the point of the exercise: we wanted the cumulative effect, not eight independent one-shot edits. The two prompt-only lanes received an instruction plus an explicit preservation clause — “Keep everything else in the scene identical” — on every single step. The masked lane received a mask and a short description of what should be in it.
The masks were hand-authored polygons drawn once on the seed and reused for every step — only possible because inpainting does not move the composition. Coordinates correct on step 1 are still correct on step 8. That is already a finding, before you look at a single output.
Every intermediate frame was saved, so the chain is inspectable rather than summarised. Those images will get a dedicated benchmarks section on this site, where you can see the seed and all twenty-four outputs side by side instead of taking our description of them.
Why does a full-frame edit change things you didn’t ask about?
Because it is not editing. It is regenerating.
A full-frame edit model takes your previous image and your instruction and produces a new image from both. There is no mechanism by which it knows that you consider the forest, the camera angle, the interior furniture and the deck lighting to be settled. Those are just pixels it has to re-derive, in the same pass, from the same conditioning. Every pass re-decides the entire scene.
On a single edit this is invisible and often desirable — it is why full-frame editing handles “clad the whole thing in brick” or “make the whole thing more austere” gracefully, where a region mask would be the wrong tool entirely.
On a chain it compounds. Step 2’s input is step 1’s output, including step 1’s small, unrequested deviations. Those deviations are now facts about the image that step 2 must preserve and elaborate. Nothing pulls the image back toward the original, because the original is no longer in the loop. The instruction “keep everything else identical” is a request, not a constraint — and in our run, both prompt-only engines honoured it locally and ignored it globally.
There is also a quieter mechanical detail. Kontext returned 1392×752 rather than the 1408×768 it was given, from the first step onward — a one-time resize to the model’s nearest supported dimensions, not progressive shrinkage. Still worth knowing if you are compositing results into a board: the frame you get back is not always the frame you sent.
What did the prompt-only chains look like after eight edits?
Both prompt-only lanes visibly acted on every instruction — not always correctly, but never by ignoring it. Both also made a large number of changes nobody asked for.
Kontext held identity best early on. Step 1 produced a genuinely good pitched gable roof and a plausible building — but the camera had already crept, the interior furniture rearranged, the deck edge changed. By the middle of the chain the scene had darkened substantially and the boardwalk had become a stone path, taking the boardwalk’s original lighting with it. By step 8 the cabin is a competent dark-timber gable building under a pergola: attractive, and not the building we started with. The forest lost its blue dusk fog and went flat.
SeedEdit drifted harder and earlier. Step 1 read “pitched gable roof” as a hipped roof — a different roof form, applied confidently. By step 4 the deck and boardwalk had been deleted from the scene entirely, the requested chimney arrived as an oversized black flue several times the plausible size, and grain and haze had begun to accumulate across the background trees. By step 8 the original composition is gone: the camera has moved to a near-frontal close view, the forest is a blur, and the building is a different building in a different material palette.
The honest summary of the prompt-only lanes is not “they are bad.” Both produced good-looking images at every step. The problem is that the good-looking image at step 8 is not an iteration of the image at step 1 — the design decisions you made along the way have been silently renegotiated.
This is exactly the failure that makes iterative AI refinement frustrating in practice: you fix one thing and lose two others, and you only notice three edits later when you compare against the version you actually approved.
What does mask-based inpainting hold?
The masked chain held the things that matter structurally. Across all eight steps: same camera, same framing, same massing, same forest, same fog, same dusk sky, same interior glow. Put step 1 and step 8 next to each other and it is unmistakably the same photograph of the same building, with different roof, path, and base.
The mechanism is straightforward. The mask is a black-and-white map: white pixels may be regenerated, black pixels are the region the model is not asked to solve. The composition is never re-derived, so it cannot drift.
But we need to be precise here, because our own internal planning notes overstated it, and we would rather correct ourselves in public than repeat a claim we have since measured.
The masked output is not pixel-identical outside the mask. Comparing the seed against the masked chain frame by frame, the whole image carries a mild global tonal shift — the scene warms slightly with each pass. It is small per step, it shrinks sharply after the first two edits, and it never moves the composition — though fine edge detail does decay along with the tone, which the benchmark measures. Over eight steps it is visible if you flip between step 1 and step 8; it is invisible between adjacent steps. That is a real limitation and a very different kind of limitation from “the building changed.”
So the accurate statement is: mask-based inpainting does not eliminate degradation, it changes its character. Full-frame editing degrades structurally — geometry, framing, identity. Masked editing degrades tonally — a slow warm drift, with the design intact underneath it.
For concept work, those two are not equivalent costs. A slightly warmer frame is a colour-grade problem. A rebuilt facade is a design problem.
Where does mask-based editing fail?
This is the part that a comparison written as marketing would leave out.
Inpainting fills the masked region toward your prompt, using the surrounding pixels as context. It is not asked “make this change”; it is asked “what belongs here?” That framing predicts its failures precisely, and our run produced all of them.
Of the eight edits, the ones that clearly landed in the masked lane were the surface replacements — the roof, the path, the plinth under the cabin — plus the chimney. The ones that did not land were the pergola, the sconces, the timber gable-end, and the pivoting door. That is not a random split.
Additions into empty space often do not happen. Edit 7 asked for a wooden slat pergola over the front deck. The mask covered the deck. The output has no pergola — the region was regenerated as more deck, because deck is what plausibly belongs in a deck-shaped hole surrounded by deck. Edit 5’s wall sconces went the same way.
Strong material contradictions get softened rather than executed. Edit 3 asked for the glass gable-end to become solid vertical timber. The masked region came back as glass with different mullions and an added door. Surrounded on all sides by a glass building, “solid timber wall” is a low-probability answer to “what belongs here”, and the model chose the high-probability one. Edit 6’s oversized timber pivot door, set into a fully glazed facade, met the same resistance.
Additions that do land can land oddly. The chimney from edit 4 appeared, but as a short flue with a pale cap that reads more like a vent than the slim dark metal chimney requested.
There is a fourth failure worth naming even though this run did not test it directly: removals. If you mask a chair and write “remove the chair”, inpainting fills that region toward the concept “chair”. The instruction has to describe what should be there instead — floor, wall, background — not what should go away. This is a property of the technique, not a bug in any particular model, and it is the single most common way people are surprised by inpainting.
Full-frame prompt editing has none of these problems. Ask it to add a pergola and you get a pergola. Ask it to remove the chair and the chair goes. It will simply also give you a slightly different building.
So which approach is better?
Neither. They are answers to different questions, and the honest read of our chains is a trade, not a ranking:
| Full-frame prompt edit | Mask-based inpaint | |
|---|---|---|
| Acts on the instruction | Every step, visibly | Landed on 4 of 8 |
| Replaces an existing surface | Yes | Yes — its strongest case |
| Adds an object into empty space | Yes | Frequently ignored |
| Keeps camera, framing, massing | No — drifts | Yes |
| Keeps colour and tone | Drifts, sometimes heavily | Mild warm drift |
| Behaviour over a long chain | Compounds | Stabilises after the first steps |
| Right for | Global changes: light, season, mood, whole-scene restyle | Local changes: one material, one surface, one element |
(Removals were not part of this run; see the note above on why they need rephrasing under a mask.)
The reason this matters more than a score is that the choice is not made once. It is made on every edit, by what you are actually trying to do at that moment.
What should you do about it?
Stop treating “edit” as one operation.
A global change (a different roof form across the whole building, a change of cladding everywhere) needs the full frame redrawn, so it belongs at the start of a chain while the composition is still negotiable. A local change (one window, one balcony, one wall) is better made through a mask on a clean copy of the image, so that only that region is regenerated. The strokes should become the mask; the source should stay untouched, because a picture with your marks drawn on it teaches the model that the marks are part of the architecture.
The practical consequence: marking a region is a functionally different operation, not a convenience. It is the difference between “regenerate this scene with a timber wall” and “regenerate this rectangle as a timber wall”.
Conclusion
Sequential editing degrades AI-generated architectural imagery, and it does so in a way that is predictable once you know the mechanism. Full-frame editing re-derives the entire scene on every pass, so unrequested changes compound and the building drifts away from you. Mask-based inpainting re-derives only what you marked, so structure holds — at the price of a slow tonal shift, and at the larger price of sometimes refusing to make additive or contradictory changes at all.
The right answer is not one engine. It is choosing per edit: global change on the full frame, local change through a mask, and a branching history so no single edit can cost you the version you approved.
Every frame behind this article is now published: the full run is in our benchmarks section, with all 24 intermediate images, the eight prompts verbatim, the measurement script, and the raw numbers as JSON. A benchmark you cannot inspect is just a claim, so that page shows the measurements that do not flatter us too — including the finding that 89.7% of the pixels outside the mask moved anyway, and that Flux Kontext beat the mask-based engine on detail retention.
Try Nuit free — 300 credits (12 images), no card required. Generate a direction, then mark a region and change one thing without losing the rest. Start your project →