Add MR cycle time section to the DAP Impact Work tab

What does this MR do and why?

The Work tab of the DAP Impact system dashboard had a single stat panel, "MR cycle time (WIP)", showing the median time to merge across every merge request created in the selected date range. The design instead calls for comparing Duo-created merge requests against everything else, using both the median and the 75th percentile.

This MR removes that panel and adds a new "MR cycle time" section header, placed after the "Sessions over time" chart. Under it are two half-width panels, "Created by Duo (WIP)" and "Not created by Duo (WIP)". Each is a GLQL bar list over merge requests merged in the selected date range, with two rows: median and p75 time to merge. "Created by Duo" draws in blue; "Not created by Duo" draws in gray, as the baseline. The panels that follow this section move down 10 compact grid rows to make room; nothing else about them changes.

The GLQL bar list display type took exactly one dimension, with each row a value of that dimension. It had no way to show two measures of the same thing, such as two duration percentiles, side by side as rows. This MR extends it: when a query has no dimension, each metric becomes a row instead, in query order, labelled in the metric's unit so a duration reads like "9h 24m" rather than a raw millisecond count. A gray bar colour was also added alongside the existing orange and blue, for the baseline panel here.

This MR also updates the GLQL schema served by the API to list the no-dimension selection for the bar list display type, so a consumer reading the schema can tell the no-dimension shape is supported. A metric with no value in the response, such as a percentile when nothing merged in the range, now renders as an em dash with an empty bar instead of a zero duration.

Both new panels are stand-ins for now, for reasons their tooltips explain:

  • GLQL cannot filter merge requests by whether GitLab Duo created them, so both panels currently show the same figures.
  • A panel footer can only link to a view of this dashboard, so the design's footer button ("Compare MR outcomes with Duo") is left out.
  • The design's header says these figures are fixed and do not follow the period filter. That is a deliberate deviation here: these panels follow the dashboard's date range filter like every other panel on it, and the section description says so. Please confirm this is the right call.

The Work tab example in ee/spec/features/explore/system_dashboards_spec.rb passes with these panels.

References

Screenshots or screen recordings

Before After
before after

How to set up and validate locally

  1. In rails console, enable the feature flags:
    Feature.enable(:explore_analytics_dashboards)
    Feature.enable(:consolidate_analytics_dashboards)
  2. Make sure ClickHouse is enabled in GDK.
  3. Visit http://127.0.0.1:3000/explore/analytics_dashboards/dap_impact.
  4. Pick a group in the Scope picker.
  5. Open the Work tab.
  6. Confirm the "MR cycle time" header with its info icon and the two bar lists render under "Sessions over time" with no error.
  7. To see metric rows outside a dashboard, paste the docs example GLQL block from doc/user/glql/display_types.md into any issue description.

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.

🤖 Generated with Claude Code

Edited by Brandon Labuschagne

Merge request reports

Loading
Loading