I think since you don't travel with it, if you don't want to spend that much to repair the whole roof and the leak hasn't damaged the inside, you can cut out the 3 x 3 square nice and neat where it is soft, replace the damaged wood with a piece of plywood that is the same thickness as what is already on the roof.
You might need to sister up some of the rafter material and replace some of the insulation if they are damaged and let it dry out.
Get a piece of EPDM rubber roof slightly larger than the size of the material removed, 3 to 4 inch overlap all around. Be careful that the glue you use doesn't damage the rubber. You can bond it on with contact cement, acrylic water based glue, and I have used Dicor self-leveling caulk. Since you don't travel with it, it isn't going to matter as long as it holds it down. The caulk under the rubber will take longer to firm up but it isn't going to roll down the road so doesn't matter.
Once you've got it down, cover the edges all around with the self-leveling caulk and it won't leak. I have used the dicor as an adhesive for the rubber twice and it worked well. One of the patches was about 3 feet by 10 inches so not quite as large as yours, but it will work fine and make it water proof.
I will say, someone commented that your leak may not be in the area where the wood is soft, and that is true. I have always opened the damaged area up carefully so that I can follow the leak back to the source. Also, I forgot to say, before you put the rubber on the new plywood, tape the joints of the wood with some good duct tape. It helps reduce the wood joint from showing through the rubber.
FYI, if you can't find rubber roofing locally, building material stores sell it as bath and shower stall liner. It may not be white and isn't usually UV protected so you would need to coat it with some of the liquid rubber roof coating to make it last in the sun.
And yes, what you suggested with a piece of metal will probably work also.
Joe and Evelyn