


Fill Failure Corpus
Side by side
The fill-failure corpus
Every fill fails somewhere. These plates put the same hole on four kinds of surface and let each engine try, so you can see where each one gives up before it happens to your photograph.
How the plates were made
Each surface is 200 × 140 pixels, drawn by scripts/make-corpus.mjs from a fixed seed. The same ellipse is cut out of every one (the orange tile), and each engine fills it with a 2-pixel feather and seed 7. The table under each strip gives each result's seam number — the measurement the removal record shows for every removal, explained in is this removal visible? — and the flags are the repetition and straight-line checks. Lower is better; nothing here is touched up afterwards.
Sand
Texture with no long-range structure: any patch of it could stand in for any other.

| Engine | Seam number | Reads as | Checks |
|---|---|---|---|
| Patch search | 0.64 | may show at 100 % | texture may repeat |
| Edge march | 0.83 | may show at fit size | — |
| Smooth fill | 0.76 | may show at fit size | — |
| Flat fill | 0.90 | may show at fit size | — |
| Clone from pin | 0.14 | reads as continuous | — |
Sky
A slow gradient with faint noise. Copying patches can leave blotches here; blending from the rim cannot.

| Engine | Seam number | Reads as | Checks |
|---|---|---|---|
| Patch search | 0.26 | reads as continuous | — |
| Edge march | 0.28 | reads as continuous | — |
| Smooth fill | 0.29 | reads as continuous | — |
| Flat fill | 0.35 | may show at 100 % | — |
| Clone from pin | 0.00 | reads as continuous | — |
Tiles
Grout lines are positioned structure. A line that enters the hole has to come out the other side in the right place.

| Engine | Seam number | Reads as | Checks |
|---|---|---|---|
| Patch search | 0.13 | reads as continuous | a straight line stops at the fill |
| Edge march | 0.85 | may show at fit size | a straight line stops at the fill |
| Smooth fill | 0.61 | may show at 100 % | a straight line stops at the fill |
| Flat fill refused; edge march ran | 0.85 | may show at fit size | a straight line stops at the fill |
| Clone from pin | 0.06 | reads as continuous | — |
Screen
A flat interface colour with a straight gradient. Any texture a fill adds here is visible.

| Engine | Seam number | Reads as | Checks |
|---|---|---|---|
| Patch search | 0.01 | reads as continuous | — |
| Edge march | 0.07 | reads as continuous | — |
| Smooth fill | 0.06 | reads as continuous | — |
| Flat fill | 0.00 | reads as continuous | — |
| Clone from pin | 1.56 | may show at fit size | — |
What the plates show
- On texture (the sand), the patch search is the only engine that keeps grain — and the repetition check fires, because a small surround feeds a large hole. The blending engines smooth the grain away and score worse.
- On a slow gradient (the sky), every engine is close; copying patches is no better than blending from the rim, and a clone along the gradient's own direction is perfect.
- On positioned structure (the tiles), nothing but the clone carries the grout lines through, and only because its pin sits exactly two tiles to the left. Every other result is flagged by the straight-line check, whatever its seam number.
- On a flat interface colour (the screen), the flat fill is exact and the clone is the worst result, because it copies a different shade of the gradient into the hole.