The original BBS02 reaction spacer for Gee’s Terry Symmetry didn’t work quite the way I expected:

The motor evidently vibrates enough to propel the block forward, shearing the double-sticky foam tape which was never intended to resist force in that plane. I thought the block was located at the point where the motor casing was tangent to the frame tube, so as to equalize the forces in both directions, but … nope.
A revised design based on measurements informed by new knowledge:

The upper curve is now symmetric and the whole block mounts more rearward under the bottom bracket lug, where some tedious work with a machinists square located the real tangent point:

The motor sure doesn’t look like it’s tangent, but a dry fit showed all the curves laid against the case and tubes.
The brazing fillet means the step fitting the downtube can’t sit snug against the edge of the lug, but most of the reaction force should go through the section into the lug, near the center of the block.
A crude marker will keep track of any motion:

I think the symmetric curve against the motor has enough projection to keep the block from wandering off, even if I haven’t gotten the location exactly right.
Stipulated: Hope is not a strategy.
The OpenSCAD source code:
MotorOD = 111; // motor frame dia
MotorOffset = 10.0; // motor OD tangent wrt lug edge
ShiftSpace = 6.0; // motor to frame space
LugLength = 25.0; // length of section over BB lug
Spacer = [5.0 + LugLength,DownTube[ID]/2,4*ShiftSpace];
SpaceAngle = 0*atan(1.8/Spacer.x); // tilt due to non-right-angle meeting
echo(str("Spacer angle: ",SpaceAngle));
module MotorSpacer() {
difference() {
translate([LugLength - Spacer.x/2,0,0])
cube(Spacer,center=true);
translate([0,0,DownTube[ID]/2])
rotate([0,90 + SpaceAngle,0]) rotate(180/FrameSides)
cylinder(d=DownTube[ID],h=DownTube[LENGTH],$fn=FrameSides,center=true);
translate([DownTube[LENGTH]/2,0,DownTube[ID]/2 - DownTube[LENGTH]*sin(SpaceAngle)/2]) // concentric with ID
rotate([0,90 + SpaceAngle,0]) rotate(180/FrameSides)
cylinder(d=DownTube[OD],h=DownTube[LENGTH],$fn=FrameSides,center=true);
translate([MotorOffset,0,-(MotorOD/2 + ShiftSpace)])
rotate([90,0,0]) rotate(180/48)
cylinder(d=MotorOD,h=2*Spacer.y,$fn=48,center=true);
}
}
Nothing like actual riding to reveal what needs more thought!