I tried start condition of:
any("task", task.prpctcomplete == 1, project.odf_pk, ctx ) && any("task", task.prname == "test", project.odf_pk, ctx )
Process fired off when I had a task name of 'test' and set to 100%. But, I noticed that it also fired off when I set it back to 80%. I haven't used sub-object checks before, but, my quess is that it is checking for ANY task with the required name, and ANY task with 100%. In my case, I renamed the task to be 'test2' and the process didn't fire off again (and I made sure there wasn't any other tasks named 'test'). I renamed again from 'test2' to 'test', process kicked off again as there are other tasks on the project which are at 100%.
I can't explain why in your case the process didn't start but, my suggestion is that you may want to have the process at the Task level with your conditions. The process will then update the parent project attribute.