On agreeing on length of PhD program in advance and three year studies
Almost certainly not.

Even in programs where the PhD research phase is supposed to have a defined length (for instance, when students receive a fellowship to cover their work for a certain period of time), it is not possible to guarantee that the PhD program will actually be completed in a certain period of time.

It can be possible to finish; however, without knowing how well a student will perform in advance, advisors can only estimate how long a PhD program will take. There is simply no way to guarantee in advance how long your student will need to finish her program. The main issue that we have is that research is inherently unpredictable, and if things don't work out right, it's difficult to say people can finish.

We can try to work with a student to plan to finish in a certain period of time, but we wouldn't try to guarantee that until the middle of the student's PhD progress.