Trouble solving mixed-domain PDE with BlockedNewtonSolver

There is quite alot going on in your problem that concerns me.

One is your usage of ufl.variable (they are not used in your variational forms).

Secondly, you should use:
dm, dphi, dl = ufl.TestFunctions(V)
rather than

to define your residuals F0, F1, F2, as otherwise ufl.extract_blocks will not behave as expected.