- Replace dao() function with PGDataAccessObject.from_model() classmethod
- Isolate class-level state in PostgresAccessLayer via DAO class copies
- Add WeakValueDictionary bind cache keyed by (metadata, table_name, model)
- Fix get_or_create bug (was double-wrapping model constructor)
- Add 98 tests: unit (DAO, descriptors, query builders) and integration (CRUD, filters, pagination, pool manager, migrations)
- Update README with new API examples
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>