data-model-uses-string-enums

IN premise

Both `Justification.type` ("SL"/"CP") and `Node.truth_value` ("IN"/"OUT") are plain strings, not Python enums; consumers must validate values themselves as invalid states like `"MAYBE"` or `"XYZ"` are representable.

Summary

The system stores important status values like justification types and truth states as plain text strings rather than constrained types, which means any arbitrary string could end up in those fields. This matters because nothing at the data layer prevents nonsensical values from being written, so every piece of code that reads these fields needs its own validation to avoid silently operating on garbage data.

Details

Sourceentries/2026/05/05/reasons_lib-__init__.md