It is allowed to have VCF files without the FORMAT field and without genotype fields. However, there is no way to generate files like this. There are two issues:
Actually, I find that you cannot even directly write records (read from your example files) because of the samples attribute being None. This causes an exception in the writer.
Your points are also valid of course.
I almost forgot about that. I used "record.samples=" to get around that. But, of course, the FORMAT field is written nevertheless even if it is empty (which means a trailing "\t" is present at the end of each line after the INFO field which confuses the GATK).
I see two ways of dealing with files where no samples are defined:
First I was inclined to prefer the second option, as without a FORMAT column, there are no samples by definition. Hence differentiating between this case and the case where there is a FORMAT column but just no samples are defined (None versus empty list).
However, this will make for a mess in _Record and any code that deals with samples (you'd always have to check for None before iterating). So I implemented the first approach (#97).
Here I assume we want to treat the samples attribute on the Reader and _Record likewise, otherwise more confusion will arise.