Here's my idea for how such a thing could work: (Cyan is a stable reflector, red cells are NE/SW gliders for data, yellow are reflectors, green are constructors, purple/white is construction recipe moving from purple to white, blue is future lanes moving from blank to blue)
Code:
Select all
x = 31, y = 24, rule = Codd
23.CD5.D$23.A5.AC$26.A$21.D5.D$20.E.F$17.D.F3.E$16.B.D5.D$19.E3.F$20.
F.E$21.D5$8.B.B8$G.B$.G!
The middle of the three recipe lanes goes NW; the rest go SE. The upper constructor decides which output lane to use depending on whether or not it receives a 1 from the red stream. If it does, it moves itself and returns the recipe along the upper output, with the distance selected to increase the length of the red loop be exactly one space. If it doesn't, it remains and returns the recipe along the lower output. The lower constructor moves itself and redirects the stream as required to ensure that the upper constructor continues to function. The red stream will probably actually be two streams (one for encoding a state 1 cell from MathAndCode's demo pattern, the other for a 0) to avoid inconveniences with producing a signal from an absence. Note that the upper stream before moving will be in the same place as the lower stream after moving, so on the upper constructor the reflector for that stream will either have to be a merger, or be reconstructed after the construction stream is finished with it (which probably only allows time for very small modifications, or possibly triggering a seed). I don't think there are any other major concerns with this design,