Michał Wielich activity https://gitlab.com/michold 2026-03-17T16:41:29Z tag:gitlab.com,2026-03-17:5213862290 Michał Wielich pushed to project branch master at GitLab.org / GitLab 2026-03-17T16:41:29Z michold Michał Wielich

Michał Wielich (ece6f08b) at 17 Mar 16:41

Merge branch 'mw-product-category-optimize-3' into 'master'

... and 1 more commit

tag:gitlab.com,2026-03-17:5213861429 Michał Wielich deleted project branch mw-product-category-optimize-3 at GitLab.org / GitLab 2026-03-17T16:41:16Z michold Michał Wielich

Michał Wielich (7908aac2) at 17 Mar 16:41

tag:gitlab.com,2026-03-17:5213858699 Michał Wielich accepted merge request !227296: Add product category - optimize vol. 3 at GitLab.org / GitLab 2026-03-17T16:40:35Z michold Michał Wielich

What does this MR do and why?

Related to gitlab-org/analytics-section/analytics-instrumentation/internal#784

Adds product categories to up to 50 metrics. These product_categories are generated automatically, using Duo.

Full script used for generating changes is available here.

This is an attempt to have better data coverage in metrics.

References

Screenshots or screen recordings

How to set up and validate locally

This MR changes needs to be verified manually - a person with domain knowledge has to go through the metrics and see if the assigned product_categories look correct. No local validation is needed, as the changes are only adding metadata not visible when using GDK.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-17:5213434519 Michał Wielich commented on merge request !227296 at GitLab.org / GitLab 2026-03-17T15:09:49Z michold Michał Wielich

@pshutsin Sounds like a good idea, I'll do that going forward! Thank you for the approval.

tag:gitlab.com,2026-03-17:5212487561 Michał Wielich commented on issue #549090 at GitLab.org / GitLab 2026-03-17T11:59:58Z michold Michał Wielich

@ankit.panchal @tjayaramaraju Should we move this issue back to ready for dev? It's currently in dev but unassigned (it belonged to Jonas).

tag:gitlab.com,2026-03-16:5208978833 Michał Wielich pushed to project branch master at GitLab.org / GitLab 2026-03-16T15:38:56Z michold Michał Wielich

Michał Wielich (4d961bd9) at 16 Mar 15:38

Merge branch 'mw-product-category-composition_analysis-1' into 'mas...

... and 1 more commit

tag:gitlab.com,2026-03-16:5208975281 Michał Wielich deleted project branch mw-product-category-composition_analysis-1 at GitLab.org / GitLab 2026-03-16T15:38:07Z michold Michał Wielich

Michał Wielich (1446e7e1) at 16 Mar 15:38

tag:gitlab.com,2026-03-16:5208969891 Michał Wielich accepted merge request !226092: Add product category - composition_analysis vol. 1 at GitLab.org / GitLab 2026-03-16T15:36:57Z michold Michał Wielich

What does this MR do and why?

Related to gitlab-org/analytics-section/analytics-instrumentation/internal#784

Adds product categories to up to 50 metrics. These product_categories are generated automatically, using Duo.

Full script used for generating changes is available here.

This is an attempt to have better data coverage in metrics.

References

Screenshots or screen recordings

How to set up and validate locally

This MR changes needs to be verified manually - a person with domain knowledge has to go through the metrics and see if the assigned product_categories look correct. No local validation is needed, as the changes are only adding metadata not visible when using GDK.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-16:5208939060 Michał Wielich deleted project branch mw-product-category-authentication-2 at GitLab.org / GitLab 2026-03-16T15:29:59Z michold Michał Wielich

Michał Wielich (52d056a7) at 16 Mar 15:29

tag:gitlab.com,2026-03-16:5208937476 Michał Wielich pushed to project branch master at GitLab.org / GitLab 2026-03-16T15:29:36Z michold Michał Wielich

Michał Wielich (769341df) at 16 Mar 15:29

Merge branch 'mw-product-category-authentication-2' into 'master'

... and 1 more commit

tag:gitlab.com,2026-03-16:5208934700 Michał Wielich accepted merge request !225893: Add product category - authentication vol. 2 at GitLab.org / GitLab 2026-03-16T15:29:01Z michold Michał Wielich

What does this MR do and why?

Related to gitlab-org/analytics-section/analytics-instrumentation/internal#784

Adds product categories to up to 50 metrics. These product_categories are generated automatically, using Duo.

Full script used for generating changes is available here.

This is an attempt to have better data coverage in metrics.

References

Screenshots or screen recordings

How to set up and validate locally

This MR changes needs to be verified manually - a person with domain knowledge has to go through the metrics and see if the assigned product_categories look correct. No local validation is needed, as the changes are only adding metadata not visible when using GDK.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

tag:gitlab.com,2026-03-16:5208921266 Michał Wielich commented on merge request !227001 at GitLab.org / GitLab 2026-03-16T15:25:59Z michold Michał Wielich

@pedropombeiro No, it can be done either way. In case we do prefer to pass the false value too, feel free to just re-request my review.

MR lgtm 👍 I'm leaving my approval.

tag:gitlab.com,2026-03-16:5208920294 Michał Wielich approved merge request !227001: Add internal event tracking and logging for runner token expiry params at GitLab.org / GitLab 2026-03-16T15:25:45Z michold Michał Wielich

What does this MR do and why?

Adds internal event tracking and structured logging for the runner token expiration parameters introduced in !226128 and !226232. This is an EE-only feature.

Without observability into how these parameters are used, we can't make informed decisions about the feature's rollout or detect misuse patterns. This MR adds:

  1. Internal event tracking -- extends the existing create_ci_runner event with two custom additional_properties:
    • has_token_expiration -- set to 'true' when token_expires_at is explicitly provided
    • has_rotation_deadline -- set to 'true' when token_rotation_deadline is provided
  2. Filtered usage metrics -- 4 new metric definitions that use filter on the custom properties to count runners created with each parameter (total count + unique users, 7d/28d)
  3. Structured logging -- all token expiration validation failures are logged via Gitlab::AppLogger.info with user ID and runner type for debugging and audit purposes

Key changes

  • app/services/ci/runners/create_runner_service.rb -- adds extra_tracking_properties hook (returns {} in CE), merged into the existing create_ci_runner event's additional_properties
  • ee/app/services/ee/ci/runners/create_runner_service.rb -- overrides extra_tracking_properties to report has_token_expiration and has_rotation_deadline; wraps all validation error paths with log_token_expiration_validation_failure for structured logging
  • config/events/create_ci_runner.yml -- adds has_token_expiration and has_rotation_deadline to additional_properties
  • ee/config/metrics/counts_all/ -- 4 new filtered metric definitions (total + unique users for each property)
  • ee/spec/services/ci/runners/create_runner_service_spec.rb -- tests for tracking properties across all runner types (instance, group, project) and logging on validation failure

References

  • Part of #573604 (Phase 3: Monitoring & Metrics from the rollout plan)
  • Builds on !226128 (REST API) and !226232 (GraphQL API)
  • Uses metric filter on custom additional properties per #474804

Screenshots or screen recordings

How to set up and validate locally

Prerequisites: Set up Snowplow Micro in GDK to observe Snowplow events in real time.

  1. Start the internal events monitor in one terminal:
    bin/rails runner scripts/internal_events/monitor.rb create_ci_runner
  2. In another terminal, create a runner with token expiration via the Rails console:
    user = User.find_by(admin: true)
    service = Ci::Runners::CreateRunnerService.new(
      user: user,
      params: {
        runner_type: 'instance_type',
        token_expires_at: 10.minutes.from_now,
        token_rotation_deadline: 5.minutes.from_now
      }
    )
    service.execute
  3. Observe the create_ci_runner event in the monitor with has_token_expiration: 'true' and has_rotation_deadline: 'true' in the additional properties.
  4. Verify logging on validation failure:
    service = Ci::Runners::CreateRunnerService.new(
      user: User.find_by(admin: true),
      params: { runner_type: 'instance_type', token_expires_at: 1.minute.from_now }
    )
    service.execute
    # Check log/application.json for "Token expiration validation failed" entry
  5. Run specs:
    bundle exec rspec ee/spec/services/ci/runners/create_runner_service_spec.rb \
      spec/services/ci/runners/create_runner_service_spec.rb

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.