Adds the abstract surface on BaseRepository and the SQLModel-backed implementation (shared by SQLite and MySQL) for: - canary blobs (upsert-by-sha256, list-with-refcount, refcount-aware delete) - canary tokens (create, slug lookup, list with filters, state update) - canary triggers (record+bump-counters atomically, list, attribute) The triggers path is a single session that inserts the row and bumps the parent token's counters together, so a subscriber that reads the token right after the bus event sees the updated count. Blob delete refuses while any token (including revoked) still references the blob; pre-v1 revoked tokens stick around for forensic value.
130 KiB
130 KiB