Add AiTracking for three Duo features
What does this MR do and why?
Adds AiTracking (the default tracker, so no extra_trackers block is needed) for three GitLab Duo features, part of the Duo AiTracking audit (#567159):
| Feature | Event | Event ID |
|---|---|---|
| Duo Vulnerability Resolution | request_duo_vulnerability_resolution |
34 |
| Duo Vulnerability Explanation | explain_vulnerability |
35 |
| Merge request description composition | compose_merge_request_description |
45 |
Each event fires at the entry of its request path via the Gitlab::InternalEventsTracking concern (track_internal_event), passing user and project only -- InternalEvents derives the namespace from the project and AiTracking derives namespace_id from the project's namespace, matching the established Duo tracking convention (e.g. Llm::ChatService). The two vulnerability features resolve project from the Vulnerability resource directly (the DuoChatResourceHelper#project helper does not cover it); the description composer uses the helper.
This combines what were three separate row-MRs (!240999 (closed), !241057 (closed), !241275 (closed)) into one, per @nisong's suggestion, to cut review churn.
Event IDs
34 / 35 / 45. 34 and 35 reuse the ids reserved for these features in #567159; 37 was taken by the already-merged !240198 (merged).
compose_merge_request_description moved from 38 to 45 on the 2026-07-27 rebase: master claimed 38 for ai_duo_messaging_feedback_submitted while this MR was in review. IDs 39-44 are reserved by in-flight MRs !246385 and !246473, so this takes the next free id rather than renumbering those.
Related
Part of #567159.