Thinking about this more and looking back at the code, I believe this is required (although build() currently doesn't raise if it's missing). At least the way build is invoked via post_receive, this value is either the current deployment dir (if hot deploy is enabled) or a newly created deployment dir (no hot deploy). If you don't specify anything, it will build in $OPENSHIFT_REPO_DIR, which I guess is the equivalent of the current deployment dir / hot deploy = true