TripleO can not take advantage of server-side environment merging, because of the way they store their files in a plan which is a swift container. We could resolve this by allowing heat to retrieve the files from Swift instead of passing them inline in the files dict.
Proposed solution could be to allow the user to pass Swift container name in the request in place of (in addition to?) a files dict. Any relative URL paths encountered in the template/environments (e.g. get_file, resource type mappings) would then be treated as relative to the container.