* I like supporting only strings for now. In the future, I can also see numbers being supported (such as allowing for CDL blocks that rely on envvars), but this can be added as needed.
It would also be super nice if the CDLTransform supported the full Color Correction Collection (CCC) in the CDL spec, where you could have something along the lines of '!<CDLTransform> { src: '/path/to/basegrades.ccc', id: '${SEQ}_${SHOT}_balance' }'.
* The FileTransform will probably have to get a bit smarter. Say you're using a pershot lut, and for some shots you dont want any such table. This could be solved by either not installing a lut in the expected location, or by installing an identity lut. Which is preferable? In the current implementation, if a lut is not found this is always an error condition. Maybe we should introduce on the FilmTransform a 'silent error mode', where this would just skip the application of that specific LUT?
Keep the system simple let it error, it should be up to the user to setup the searchpath so that an identity lut is found if other paths fail to resolve to a lut.
It might be an idea to make this case not an exception, but a error which gets sent through some kind or error handler.
* The "globals" pre-declaration could also define an optional default (used if the envvar is not set). If the envvar is not set, and no default is specified, any references to the global variable would probably be an error.