AIP and all it's ancillary scripts have an ill defined data model - everything is just dictionaries, so it's tough to work out what an object is supposed to be at any given time
This extends to the serialisation and de-serialisation - this is done by dumping objects to/loading objects from json without any validation. It's entirely possible that the data being persisted doesn't exactly match what code expects as various components evolve over time
Closes #347
The unit tests all used a various fake versions of 'variants' and 'report entries' with really minimised content. Each of these super minimised entries worked for the specific test case, but wasn't a valid representation of the real objects, making the unit tests ~worthless
Proposed Changes
Introduce Pydantic models for all objects which are currently stored as plain dicts
Implement parsing/writing of models to JSON files solely using the pydantic model interface; this includes explicit validation
Fixes
Proposed Changes
Checklist