(** Durable {!Repository.S} backed by SQLite through Caqti. The production store. All performed facts are stored through {!Codec}: the adapter never inspects domain shape, it stores and returns opaque encoded strings. Prescriptions are not stored — a workout resolves its prescription against the shared {!Catalog} on read. Identity is assigned here: trainees and workouts get string ids the adapter mints. *) include Repository.S exception Corrupt of Codec.error (** Raised when a stored workout cannot be decoded — a corrupted database or a catalog that no longer names a stored routine or workout. This is a fault, not a normal outcome. *) val connect : string -> (t, Caqti_error.t) result Lwt.t (** [connect uri] opens a connection pool and applies {!Migrations}. [uri] is a Caqti URI such as ["sqlite3:hito.sqlite"]. *)