Another possible reason for it to run rich is a defective ECT sensor or wiring, or a missing thermostat, and since this is an engine swap - incorrect cooling system plumbing - if the ECT reports the engine as below operating temperature, whether that be erroneous or not, the ECU will stay in open loop and ignore the O2 sensor.
The J20 has a somewhat unusual cooling system - the ECT is a dual element sensor (one for the ECU one for the gauge) located on the water outlet elbow at the back of the cylinder head, and from there the flow splits three ways, one through the heater core, the second through the throttle body, and the third goes to the radiator top hose, down through the radiator, back to the engine, and through the thermostat to the water pump, before re-entering the block.