# What Eight Sequential Edits Do to an AI Architecture Image

**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](/blog/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:

1. Flat roof → pitched gable roof in dark standing-seam metal
2. Wooden boardwalk → flagstone path
3. Left glass gable-end → solid vertical timber cladding
4. Add a slim dark metal chimney flue
5. Add two exterior wall sconces beside the entrance
6. Entrance door → oversized pivoting timber door
7. Add a wooden slat pergola over the front deck
8. 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 "make it dusk" 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 endpoint'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](/blog/iterative-ai-design-refine-concepts/) 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](/benchmarks/sequential-editing/). 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 did we change in Nuit because of this?

We stopped treating "edit" as one operation.

Nuit now routes edits by how you asked. When you use **Branch** or **Improve**, you can draw on the image or select a region to mark exactly what should change. If a marked region is present, the edit is sent as a mask to a mask-based inpainting engine, and only that region is regenerated. If there is no marked region, the edit stays on the full-frame path, because an unmarked instruction is usually a global one and a mask would be the wrong tool.

Three implementation details worth stating, because they are where this kind of feature usually goes wrong:

**The engine receives the clean image plus a separate mask, not a picture with your marks drawn on it.** Sending the annotated composite would mean the model sees your strokes as part of the architecture. The strokes become the mask; the source stays untouched.

**There is no new setting.** The routing follows the gesture. You do not pick an editing engine, and the model selector (Light, Nuit N, Nuit F) is unrelated to it — those are choices about the character of a *generation*, not about how an edit is applied. Light is the fast, inexpensive option for quick studies; Nuit N and Nuit F behave differently from one another and give a different character of result, so which one suits you is a preference, not a tier.

**The prompt goes through raw.** Our prompt optimiser runs only on new generations. A masked edit is an instruction about a specific region, and rewriting it usually makes it worse.

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".

---

## How should you iterate on a concept without wrecking it?

Four working rules that fall out of this test.

**Do the global moves first.** Light, weather, season, material palette, mood — these need the whole frame redrawn, and they are cheapest while the composition is still negotiable. Making them late means paying for a full-frame re-render after you have locked details you care about.

**Do the local moves last, with a marked region.** Once the composition and camera are what you want, every further change should be a masked one. This is the phase where drift costs the most and masking costs the least.

**Branch instead of chaining.** The test above is a worst case by construction: eight edits stacked on a single lineage with no way back. Real work should not look like that. If every image is a branch point, a bad edit costs you one branch, not your chain — and you keep the approved version intact next to the experiment. That is the reasoning behind [branching as an exploration technique](/blog/branching-design-exploration-technique/), and this test is the clearest argument for it we have run.

**Phrase masked edits as descriptions, not commands.** "A solid wall clad in vertical timber boards" works. "Make this timber" is weaker. "Remove the pergola" does not work at all — say what should be there instead.

And if a masked edit refuses to take after two attempts, that is information: the change you are asking for is fighting its context. Either widen the mask so the model has room to make the change coherent, or accept that this one is a full-frame edit and branch first so you have something to come back to.

---

## What this test does not tell you

Some limits, stated plainly.

It is **one seed image**, one typology, one lighting condition. A dusk forest exterior with a lot of glass and a high-frequency background is a hard case for preservation and an easy case for tonal drift. A daylit urban facade would behave differently.

It is **one chain per engine**, not repeated runs. Generative models are stochastic; a rerun would not produce identical failures. What we would expect to hold is the *shape* of the behaviour — full-frame lanes drifting structurally, masked lanes holding structure and failing on additions — because that follows from how each technique works, not from a lucky sample.

It is **dated**. These runs were made in July 2026 against the engines named. Editing models change quickly, and a benchmark without a date becomes a false claim within months. When we rerun this, the new run will be dated too, and the old one will stay published.

And it does **not** measure aesthetic quality. Most of the twenty-four outputs are perfectly presentable images taken on their own. The question was never "which is prettier" — it was "which one is still your building at step 8."

---

## Where this fits in the larger workflow

Editing degradation is a specific case of a general problem: keeping one design coherent while you work on it. The same tension shows up between views rather than between edits — an exterior, a plan and an interior that are supposed to describe one building and quietly stop agreeing with each other. We wrote about that in [keeping AI designs consistent across a project](/blog/consistent-ai-designs-across-project/).

It is also worth being clear about what these images are. Nothing here is a construction document or a survey-accurate render; it is concept imagery, and the distinction between that and rendering is real — see [AI rendering vs concept design](/blog/ai-rendering-vs-concept-design/). What we protect when we protect geometry across an edit chain is a *design decision*, not a dimension.

---

## 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 routing: 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](/benchmarks/sequential-editing/)**, 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 our own routing choice on detail retention.

**Try Nuit free — 10 generations, no card required.** Generate a direction, then mark a region and change one thing without losing the rest. [Start your project →](https://nuit.archi)
