storage-handles-schema-evolution-via-try-except
IN premise
Missing tables from older database versions (`repos`, `network_meta`) are handled by swallowing exceptions during `load()` rather than formal migrations — a backward-compatibility substitute that silently degrades.
Summary
When the database schema changes between versions, the code doesn't use a proper migration system to update old databases. Instead, the load function just wraps newer table reads in try/except blocks so that if a table doesn't exist yet, the error is silently caught and that data is simply skipped. This keeps old databases from crashing but means there's no explicit upgrade path, and users won't know their database is missing features until they notice something isn't working.
Dependents
These beliefs depend on this one:
- system-tolerates-evolution-at-all-boundaries — The system handles format and schema evolution gracefully at every external boundary: derive output parsers support two format versions with automatic fallback, belief import silently skips unknown metadata fields, and storage tolerates missing tables from older database schemas via exception handling
Details
| Source | entries/2026/04/29/reasons_lib-storage.md |