I did software contracting for a while. It’s certainly appropriate to define parameters like “use language x, code these features, by this deadline and keep a synchronized copy of the code in this repo.”
You can’t set hours and direct particular tasks day to day.