[SOLVED} MOSFET continuously conducts

Look at the code.
You can see from the meter reading and ths terminal capture file that it is regulating .
How it does that has to be based on the code. It's all there in the post with the photos.

Could you also measure the opamp output voltage when you have it set
for some known current?

Op amp output voltage is rock solid at 3.80 V +/-20 mV for a current setpoint of 650 mA (0.650 A)
The current sense resistor voltage is 1.333 V +/- 20 mV for that same setpoint. The voltage on the gate is the same as the op amp output. The votlage across the 1 k resistor is 0.003 V (3 mV) which as you know means the mosfet gate is drawing 3 uA (because mosfets are voltage controlled not current controlled). The only conclusion anyone can draw based on all the observations presented in Reply #66 is that the PWM is fluctuating rapidly because that is how it keeps the current stable. This is similar to how the F22 Raptor air control surfaces work under computer control. That aircraft is not aerodynamically stable so the air control surfaces have to adjust thousands of time a second, meaning such an airframe design could never fly using the old direct mechanical link between the pilot controls and the air control surfaces. The computer keeps it stable by rapidly adjusting much faster than humanly possible. If you look at the voltage on the current sense resistor and look at the serial print terminal capture for the 650 mA setpoint you see that it is indeed compensating rapidly:
I will say that the resolution of the regulation (accuracy) leaves something to be desired.
The attached plot shows it is regulating the current to 650 mA +20/-40 (from 641 to 670 mA)
I would not be at all surprised if you told me that it was because my code was primitive. I'm not a programmer so I just threw something together . If you can do better then you are more than welcome to post some different code for me to try.

0.6500489
0.6353861
0.6256110
0.6085044
0.6451613
0.6451613
0.6085044
0.6085044
0.6427175
0.6451613
0.6256110
0.6133920
0.6353861
0.6500489
0 0.6256110
0.6231672
0.6231672
0.6451613
0.6256110
0.6256110
0.6231672
0.6353861
0.6256110
0.6085044
0.6329423
0.6549365
0.6256110
0.6451613
0.6451613
0.6085044
0.6256110
0.6231672
0.6549365
0.6133920
0.6133920
0.6451613
0.6353861
0.6133920
0.6500489
0.6549365
0.6256110
0.6280548
0.6549365
0.6500489
0.6329423
0.6500489
0.6304986
0.6280548
0.6549365
0.6451613
0.6329423
0.6647117
0.6353861
0.6598241
0.6695992
0.6280548
0.6280548
0.6647117
0.6647117
0.6329423
0.6622679
0.664711

THIS IS what it looks like when I comment out the serial prints to obtain maximum feedback loop speed.
Note the voltage on current sense resistor is more stable (hence the current is probably more accurate but unfortunately I can't capture the current measurements without serial prints. (catch-22)
Judging from the fact that the current sense resistor voltage is much more stable, I would conclude that the inaccuracy (+/- 40 mA deviation) shown in the plot was caused by the feedback loop slowed down by the serial prints, causing overshoot during serial prints , requiring more compensation and more overshoot etc. Once the serial prints were removed, the feedback loop was able to operate at full speed resulting in a more stable voltage on the current sense resistor.

Compare the stability of the current sense resistor voltage shown on the meter in the above video to the fluctuation in the meter readings in the original video here.

Here's the new code:

int pwm_pin = 3;
int pwm_cmd = 108;
int voltage_cnts;
float voltage;
float current;

void setup() 
{
  // put your setup code here, to run once:
Serial.begin(115200);
pinMode(pwm_pin,OUTPUT);

}

void loop() 

{
  // put your main code here, to run repeatedly:
  
voltage_cnts = analogRead(A0);
voltage = voltage_cnts * 0.004887585532746823069403714565;
current = voltage/2;
 // Serial.println(current,7);
 // delay(1);

analogWrite(pwm_pin, pwm_cmd);

 
   
}

Here's the photo of the PWM .

Ch-1: Amp/Div = 1V/div
Ch-2: Amp/Div = 2V/div

Time/Div = 0.5 mS

C = 108: (2.137 V)
R = 2.125 ohms
I = C/R = 1.005 A