Add last successful sync timestamp and rename the Anthropic integration model
What does this MR do and why?
Two small changes to the merged Anthropic Compliance integration table and model.
last_successful_sync_at — an empty AI Governance page reads the same whether nobody used Claude Code or ingestion stopped three weeks ago. Recording the last successful sync is what lets a reviewer read an empty page as no activity rather than no ingestion. Nullable with no default: null means never synced, which is distinct from synced and found nothing. Written by the session-list worker in https://gitlab.com/gitlab-org/gitlab/-/work_items/623177.
Model rename to Ai::Compliance::Anthropic::Integration. Every sibling already lives under that module — Client, UserResolver, Sessions::CreateService — and a Session model is being added there in !254795. The table name is unchanged.
Drop-reason counter columns are deliberately not here: drop reasons are tracked as Internal Events instead, since Prometheus cannot carry namespace_id and lifetime counters never reset once the customer fixes the problem. See https://gitlab.com/gitlab-org/gitlab/-/work_items/623180.
Note
The rename conflicts with !254795, which references the current class name. 254795 should merge first; this branch then needs a rebase updating those references.
References
- Closes https://gitlab.com/gitlab-org/gitlab/-/work_items/628486
- Design doc: gitlab-com/content-sites/handbook!20750 (merged)
How to set up and validate locally
bundle exec rails db:migratebundle exec rspec ee/spec/models/ai/compliance/anthropic/integration_spec.rb
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist.