refactor(alerts): direct core QAlerts binding on QQQ RC.5 (#19 part 1) #20

Merged
KofTwentyTwo merged 1 commits from feature/arch-alerts-core into develop 2026-10-14 00:37:02 +00:00
KofTwentyTwo commented 2026-10-14 00:34:02 +00:00 (Migrated from github.com)

Summary

The "now" part of #19 (architecture review QRun-IO/qqq#1150, finding F3).

  • Bumps to QQQ 4.1.0-RC.5.

  • AlertsQBitAlertSink now calls core QAlerts directly (raise, resolve, heartbeat, plus QAlertTypeMetaData registration). No reflection, no apiPackage constructor, no Class.forName.

  • Behaviour is unchanged:

    • it stays quiet when no alerts implementation is installed;
    • custom sinks still win;
    • an alerting failure is logged once and never fails a backup.
  • Deletes the alerts/fakeapi test doubles; the tests use the real core types.

  • Renamed alert types, because RC.5 rejects underscores in alert names:

    • backups.run.missing_in_storage becomes backups.run.missing-in-storage;
    • backups.plan.owner_invalid becomes backups.plan.owner-invalid.

    The dedup keys change the same way. Hosts with routing rules on the old names must update them.

  • TableFingerprints, TableReader and StandardRestoreWriter are tagged STAND-IN(..., removeBy=4.1.0-RC.6). They switch to core TableSchemaFingerprint/KeysetPager in the RC.6 bump, the second half of #19.

Tests

mvnw -B verify (Docker ITs included): 151 tests, 0 failures. Coverage is 87.22% instructions and 97.06% classes.

🤖 Generated with Claude Code

## Summary The "now" part of #19 (architecture review QRun-IO/qqq#1150, finding F3). - Bumps to **QQQ 4.1.0-RC.5**. - `AlertsQBitAlertSink` now calls core `QAlerts` directly (`raise`, `resolve`, `heartbeat`, plus `QAlertTypeMetaData` registration). No reflection, no `apiPackage` constructor, no `Class.forName`. - Behaviour is unchanged: - it stays quiet when no alerts implementation is installed; - custom sinks still win; - an alerting failure is logged once and never fails a backup. - Deletes the `alerts/fakeapi` test doubles; the tests use the real core types. - **Renamed alert types**, because RC.5 rejects underscores in alert names: - `backups.run.missing_in_storage` becomes `backups.run.missing-in-storage`; - `backups.plan.owner_invalid` becomes `backups.plan.owner-invalid`. The dedup keys change the same way. Hosts with routing rules on the old names must update them. - `TableFingerprints`, `TableReader` and `StandardRestoreWriter` are tagged `STAND-IN(..., removeBy=4.1.0-RC.6)`. They switch to core `TableSchemaFingerprint`/`KeysetPager` in the RC.6 bump, the second half of #19. ## Tests `mvnw -B verify` (Docker ITs included): 151 tests, 0 failures. Coverage is 87.22% instructions and 97.06% classes. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.