It's perfectly possible to assemble a project by writing individual files one at a time, so you would basically get 8k tokens per file. Or you could even write out the files in parts.
Sure but in that case how do it keep track of what it has already output? What stops it 'hallucinating' functions in files that it has already produced.