storage-uses-json-columns-for-lists

IN premise

Antecedent IDs, outlist IDs, nogood node sets, and node metadata are stored as JSON text columns rather than junction tables — acceptable because the code always loads the full network, never queries relationships via SQL joins.

Summary

List-valued fields like antecedents, outlists, and nogoods are serialized as JSON strings inside single database columns instead of being normalized into separate relational tables. This works fine here because the system always loads the entire belief network into memory at once, so there is never a need to query or filter by individual relationships at the SQL level.

Details

Sourceentries/2026/04/29/reasons_lib-storage.md