SignatureRepository.delete(:41): non-atomic delete+promote-default (crash between → account left with no default). Wrap in one @Transaction.
MessageDao.observeSummaries(:23): dead production API (only tests use it; superseded by Paging #124/#214) — a full-scan footgun; remove it.
Unchunked IN(:ids) in MailRepositoryImpl expunge/move (:326/:382) — safe today via maxSize=200 cap but latent SQLITE_MAX_VARIABLE_NUMBER (999) crash; chunk like MailPruner does.
AccountDataMigrator(:100) stale KDoc (says v1/1.json, DDL is v2 with sortOrder).
DatabaseEncryption.migrate(:82) doesn't sweep stale -journal sidecar (AccountDataMigrator does).
AccountSettingsRepository.update/SignatureRepository.create non-atomic read-modify-write / check-then-act (concurrent setX clobber; two first-creates both default) — unlikely, tighten with @Transaction.
Phase-3 review — below-the-cut LOW findings (Backlog):
- `SignatureRepository.delete`(:41): non-atomic delete+promote-default (crash between → account left with no default). Wrap in one @Transaction.
- `MessageDao.observeSummaries`(:23): dead production API (only tests use it; superseded by Paging #124/#214) — a full-scan footgun; remove it.
- Unchunked `IN(:ids)` in `MailRepositoryImpl` expunge/move (:326/:382) — safe today via maxSize=200 cap but latent `SQLITE_MAX_VARIABLE_NUMBER` (999) crash; chunk like `MailPruner` does.
- `AccountDataMigrator`(:100) stale KDoc (says v1/1.json, DDL is v2 with sortOrder).
- `DatabaseEncryption.migrate`(:82) doesn't sweep stale `-journal` sidecar (AccountDataMigrator does).
- `AccountSettingsRepository.update`/`SignatureRepository.create` non-atomic read-modify-write / check-then-act (concurrent setX clobber; two first-creates both default) — unlikely, tighten with @Transaction.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Phase-3 review — below-the-cut LOW findings (Backlog):
SignatureRepository.delete(:41): non-atomic delete+promote-default (crash between → account left with no default). Wrap in one @Transaction.MessageDao.observeSummaries(:23): dead production API (only tests use it; superseded by Paging #124/#214) — a full-scan footgun; remove it.IN(:ids)inMailRepositoryImplexpunge/move (:326/:382) — safe today via maxSize=200 cap but latentSQLITE_MAX_VARIABLE_NUMBER(999) crash; chunk likeMailPrunerdoes.AccountDataMigrator(:100) stale KDoc (says v1/1.json, DDL is v2 with sortOrder).DatabaseEncryption.migrate(:82) doesn't sweep stale-journalsidecar (AccountDataMigrator does).AccountSettingsRepository.update/SignatureRepository.createnon-atomic read-modify-write / check-then-act (concurrent setX clobber; two first-creates both default) — unlikely, tighten with @Transaction.