By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Read hopinion.yaml through the codec and nothing else The list of keys the file may hold was written out beside the codec that declares them, with a comment claiming the two could not disagree. They could, in the direction that matters least visibly: a field added to the codec and not to the list is a setting hopinion accepts and then refuses as unknown. The list now comes off `jsonObjectSchemaViaCodec`, so there is one answer to what the file may say. An empty file was answered here rather than by the codec. It is handed on as an empty mapping instead, so what an empty file means and what a file setting nothing means cannot come apart. What is left around the codec is the refusal of a key it does not declare, which autodocodec is deliberately lenient about and this file must not be: a key nobody has heard of reads as a rule turned off and behaves as a rule still running. The tests say so. `Choices` gains the two obligations every other codec type in here has, `genValidSpec` and `jsonSpec`, and a property that anything the codec writes is read back through the whole of `parseChoices`, which is what fails the moment the keys it refuses and the keys it declares disagree. Blanking the key list fails that property by name, checked. The schema the codec derives is a golden, so changing what a repository may write in `hopinion.yaml` is a diff somebody reviews.