gegl:edge produces artifacts with border-behavior=loop
This is confirmed observing that its output depends on the chunk-size:
$ GEGL_CHUNK_SIZE=$((33*33)) gegl -o t.png -- cell-noise crop width=99 height=99 edge border-behavior=loop && md5sum t.png
produces a different md5sum than
$ GEGL_CHUNK_SIZE=$((33*66)) gegl -o t.png -- cell-noise crop width=99 height=99 edge border-behavior=loop && md5sum t.png
The problem is here:
https://gitlab.gnome.org/GNOME/gegl/blob/master/operations/common-gpl3+/edge.c#L269
the loop assumes that rect./roi->{x,y} are offset by 1x1, but that's not always the case because gegl_operation_get_required_for_output() takes into account the abyss policy and extends the required rectangle to the other input side when necessary.
The fix is simple: don't use gegl_operation_get_required_for_output() to compute 'rect', use roi->{x,y} - 1 and roi->{width,height} + 2 instead
This border-behavior is used by GIMP's Filters->Render->Circuit...