Adservio Code Review Analysis
A read-only analysis of recent merge request review behavior in GitLab, focused on visible review discussion, reviewer distribution, queue health, MR size, and traceability gaps.
Executive Summary
- 30 of 35 merged MRs (85.7%) had no visible non-author review comment in GitLab.
- 27 of 35 merged MRs (77.1%) carried the `CR - Approved` label.
- 22 merged MRs (62.9%) were labeled `CR - Approved` without any visible non-author review comment.
- 11.4% of merged MRs changed more than 20 files, while 0.0% changed more than 50 files.
- Among MRs with visible review discussion, the median last-author-commit to first-review time was 4.0h.
- The median last-author-commit to `CR - Approved` time was 25.2h.
- The top 3 reviewers accounted for 80.0% of visible review touches.
- 42 of 45 active open MRs (93.3%) were older than 48 working hours.
Merged MRs Merged MRs inside the analysis window. | 35 |
Open MRs All currently open group MRs. | 48 |
Active open MRs Open MRs excluding drafts. | 45 |
Draft open MRs Open MRs marked draft/WIP. | 3 |
Visible review rate Merged MRs with at least one visible non-author GitLab comment. | 14.3% |
Merged without visible review comment Merged MRs with zero visible non-author comments. | 85.7% |
CR - Approved label coverage Merged MRs carrying the CR-approved label. | 77.1% |
Approval API coverage Merged MRs with at least one approver in the GitLab approvals API. | 14.3% |
CR - Approved without visible review comment CR-approved MRs with no visible non-author comment. | 62.9% |
Median MR created -> first review Working time from MR creation to first visible non-author comment. | 2.8d |
Median last author commit -> first review Working time from last author commit before review to first visible non-author comment. | 4.0h |
Median first review -> CR - Approved Working time from first visible comment to CR-approved label after review start, else merge. | 2.9h |
Median MR created -> CR - Approved Working time from MR creation to CR-approved label after review start, else merge. | 3.0d |
Median last author commit -> CR - Approved Working time from last author commit before review to CR-approved label after review start, else merge. | 25.2h |
Median MR created -> merged Working time from MR creation to merge. | 18.6h |
Median changed files Median GitLab `changes_count` value. | 3 |
MRs > 5 files Merged MRs where `changes_count` is above 5. | 28.6% |
MRs > 10 files Merged MRs where `changes_count` is above 10. | 17.1% |
MRs > 20 files Merged MRs where `changes_count` is above 20. | 11.4% |
MRs > 50 files Merged MRs where `changes_count` is above 50. | 0.0% |
Top 3 reviewer touch share Share of visible review touches handled by the top 3 reviewers. | 80.0% |
Active open backlog rate Non-draft open MRs older than 48 working hours. | 93.3% |
Timing Breakdown
These headline timing medians bring back the anchor-to-anchor numbers directly, using working time with weekends excluded.
| Median MR created -> first review | 2.8d |
| Median last author commit -> first review | 4.0h |
| Median MR created -> CR - Approved | 3.0d |
| Median first review -> CR - Approved | 2.9h |
| Median last author commit -> CR - Approved | 25.2h |
| Median MR created -> merged | 18.6h |
Reviewer Distribution
| Marian Andrei | 2 | 7 | 40.0% |
| Edgar Alexa | 1 | 3 | 20.0% |
| Daniel Onisoru | 1 | 1 | 20.0% |
| George Murgoci | 1 | 4 | 20.0% |
Repo Breakdown
| adservio/frontend | 13 | 7.7% | 84.6% | 3 |
| adservio/web | 11 | 27.3% | 72.7% | 1 |
| adservio/accommodations/backend | 2 | 0.0% | 100.0% | 10.5 |
| adservio/admission/backend | 2 | 50.0% | 50.0% | 19.5 |
| adservio/docgen2/backend | 2 | 0.0% | 100.0% | 4.0 |
| adservio/helm2 | 2 | 0.0% | 50.0% | 1.0 |
| adservio/billing/backend | 1 | 0.0% | 100.0% | 5 |
| adservio/devops/iac | 1 | 0.0% | 0.0% | 3 |
| adservio/uni/backend | 1 | 0.0% | 100.0% | 26 |
Visible Review Discussion MRs
Compact by default: key CR metrics stay visible, and each row expands inline for the full audit trail. The table starts sorted by Last Commit -> First Review.
| Details | ||||||
|---|---|---|---|---|---|---|
| adservio/frontend!1683 | [ADS-6660][Situatie scolara] - US3 Calculul mediei | 2/5 Light | 2.8d | 1.5h | 2.8d | |
Repo adservio/frontend Author Achim Stefan Reviewers George Murgoci Review Comments 4 Quality Notes 4 visible comments; 1 substantive comment; single reviewer Substantive Comments 1 Reviewer Count 1 Post-Review Pushes 0 MR Created 2026-03-24 16:25 Last Author Commit 2026-03-27 10:37 First Review 2026-03-27 12:05 CR Approved 2026-03-27 12:17 Merged 2026-03-27 14:02 First Review -> CR Approved 0.2h Last Commit -> CR Approved 1.7h Created -> Merged 2.9d | ||||||
| adservio/web!2423 | [[S: ADS-6999] [BE] Table column settings per user | 4/5 Strong | 1.7h | 1.8h | 3.0d | |
Repo adservio/web Author Catalin Cojan Reviewers Marian Andrei Review Comments 4 Quality Notes 4 visible comments; 3 substantive comments; single reviewer; 3 post-review pushes; multi-point discussion Substantive Comments 3 Reviewer Count 1 Post-Review Pushes 3 MR Created 2026-03-20 10:37 Last Author Commit 2026-03-20 10:36 First Review 2026-03-20 12:22 CR Approved 2026-03-25 10:58 Merged 2026-03-27 08:47 First Review -> CR Approved 2.9d Last Commit -> CR Approved 3.0d Created -> Merged 4.9d | ||||||
| adservio/web!2424 | [ADS-7050]: [BE] - Resetare parola: link-ul de resetare nu se trimite, cererea... | 3/5 Solid | 3.9h | 4.0h | 6.8h | |
Repo adservio/web Author Andrei Dragan Reviewers Daniel Onisoru Review Comments 1 Quality Notes 1 visible comment; 1 substantive comment; single reviewer; 1 post-review push Substantive Comments 1 Reviewer Count 1 Post-Review Pushes 1 MR Created 2026-03-23 08:17 Last Author Commit 2026-03-23 08:16 First Review 2026-03-23 12:13 CR Approved 2026-03-23 15:07 Merged 2026-03-23 15:07 First Review -> CR Approved 2.9h Last Commit -> CR Approved 6.8h Created -> Merged 6.8h | ||||||
| adservio/admission/backend!102 | [ADS-6859] - Permissions for sessions/applications/documents | 4/5 Strong | 19.0d | 23.8h | 19.0d | |
Repo adservio/admission/backend Author George Murgoci Reviewers Edgar Alexa Review Comments 3 Quality Notes 3 visible comments; 3 substantive comments; single reviewer; 2 post-review pushes; multi-point discussion Substantive Comments 3 Reviewer Count 1 Post-Review Pushes 2 MR Created 2026-02-24 10:22 Last Author Commit 2026-03-20 09:52 First Review 2026-03-23 09:39 CR Approved 2026-03-23 11:04 Merged 2026-03-23 11:13 First Review -> CR Approved 1.4h Last Commit -> CR Approved 25.2h Created -> Merged 19.0d | ||||||
| adservio/web!2418 | [ADS-6721] allow accommodations export on add download job | 4/5 Strong | 5.3d | 3.1d | 7.1d | |
Repo adservio/web Author Ionut Ciolan Reviewers Marian Andrei Review Comments 3 Quality Notes 3 visible comments; 2 substantive comments; single reviewer; 1 post-review push; multi-point discussion Substantive Comments 2 Reviewer Count 1 Post-Review Pushes 1 MR Created 2026-03-18 08:06 Last Author Commit 2026-03-20 13:21 First Review 2026-03-25 16:05 CR Approved 2026-03-27 10:30 Merged 2026-03-27 12:15 First Review -> CR Approved 42.4h Last Commit -> CR Approved 4.9d Created -> Merged 7.2d | ||||||
No Visible Review Comment Audit
These merged MRs had no visible non-author GitLab comment under the current heuristic. Use this section to audit whether the gap is a real review-process issue or a GitLab traceability issue.
Total MRs30
With CR Label22
With Approval API4
- Open the MR link and check the Overview tab for
CR - Approvedand any approval widget signal. - Check Activity / Discussions for real human reviewer comments.
- If you only see system notes, merge notes, mentions, or bot activity, it stays in this audit set.
- If you find a genuine reviewer comment from someone other than the author, treat that MR as a false positive of this heuristic.
full audit table (30 MRs). Click again to collapse.
| adservio/frontend!1672 | adservio/frontend | School situation improvements | Achim Stefan | 2026-03-23 | Yes | |
| adservio/web!2421 | adservio/web | [hotfix] Add hit/miss for redis get on otel | Catalin Cojan | 2026-03-23 | Yes | Yes |
| adservio/frontend!1650 | adservio/frontend | [ADS-6827] Elevul transferat apare ca fiind activ | Dron Gabriel | 2026-03-23 | Yes | |
| adservio/admission/backend!111 | adservio/admission/backend | sessions permissions updates | George Murgoci | 2026-03-23 | ||
| adservio/frontend!1661 | adservio/frontend | [TESTING] - Auth provider TUIASI | Ioana Ivan | 2026-03-23 | ||
| adservio/web!2425 | adservio/web | OAuth Changes | Daniel Onisoru | 2026-03-23 | ||
| adservio/frontend!1673 | adservio/frontend | [ADS-7050] Resetare parola: link-ul de resetare nu se trimite | Dron Gabriel | 2026-03-23 | Yes | |
| adservio/web!2426 | adservio/web | [ADS-7087]: Institution root organisation ID | Dragoș Ivan | 2026-03-24 | Yes | Yes |
| adservio/frontend!1678 | adservio/frontend | [ADS-7016]: Refactor absences tests | Paul Tanasuca | 2026-03-24 | Yes | Yes |
| adservio/web!2429 | adservio/web | [HOTFIX] staff att - sync activities + missing lang | Ionut Ciolan | 2026-03-25 | Yes | |
| adservio/docgen2/backend!99 | adservio/docgen2/backend | [ADS-7097]: Numarul de ordine al campurilor se repeta | Dana Mihaela Maritca | 2026-03-25 | Yes | |
| adservio/accommodations/backend!52 | adservio/accommodations/backend | [HOTFIX] billing payment intent routing key | Ionut Ciolan | 2026-03-25 | Yes | |
| adservio/helm2!231 | adservio/helm2 | ADS-6925 real ip tuiasi | Raul Popovici | 2026-03-26 | ||
| adservio/frontend!1677 | adservio/frontend | [ADS-7094]: Schimbare ordine filtre catalog | Iuliana Gugeanu | 2026-03-26 | Yes | |
| adservio/web!2427 | adservio/web | ASD-6925 set real ip tuiasi | Raul Popovici | 2026-03-26 | ||
| adservio/devops/iac!24 | adservio/devops/iac | new users for postgres | Raul Popovici | 2026-03-26 | ||
| adservio/frontend!1687 | adservio/frontend | Student redirect on gradebook fix | Achim Stefan | 2026-03-26 | Yes | |
| adservio/frontend!1676 | adservio/frontend | [ADS-6999] Table column settings per user | Achim Stefan | 2026-03-27 | Yes | |
| adservio/docgen2/backend!100 | adservio/docgen2/backend | [ADS-7116]: Suprapunerea continutului | Dana Mihaela Maritca | 2026-03-27 | Yes | |
| adservio/frontend!1689 | adservio/frontend | Accommodations student payment in processing label | Achim Stefan | 2026-03-27 | Yes | |
| adservio/web!2430 | adservio/web | [HOTIFX] Import school classes bug fixed | Ionut Ciolan | 2026-03-27 | Yes | |
| adservio/web!2416 | adservio/web | [S: ADS-6693] [ADS-7018] Adaugare lista localitati in paginile de adaugare/editare elev | Catalin Cojan | 2026-03-27 | Yes | Yes |
| adservio/billing/backend!236 | adservio/billing/backend | [ADS-6693] Precompletarea profilul de facturare al parintelui | Edgar Alexa | 2026-03-27 | Yes | |
| adservio/frontend!1688 | adservio/frontend | [ADS-6693] [Abonamente] - Precompletarea profilul de facturare al parintelui | Edgar Alexa | 2026-03-27 | Yes | |
| adservio/accommodations/backend!49 | adservio/accommodations/backend | [ADS-6721] Accommodations export changes | Ionut Ciolan | 2026-03-27 | Yes | |
| adservio/frontend!1667 | adservio/frontend | [ADS-6721] Nu se pot genera rapoartele 'Balanta debitorilor' pe camine&Erori la exporturile | Achim Stefan | 2026-03-27 | Yes | |
| adservio/helm2!230 | adservio/helm2 | [ADS-6721] accommodations s3 credentials | Ionut Ciolan | 2026-03-27 | Yes | |
| adservio/frontend!1690 | adservio/frontend | [ADS-7089] Meetings - add new error messages | Marian Andrei | 2026-03-27 | ||
| adservio/web!2431 | adservio/web | [ADS-7089] Update google oauth & meetings | Marian Andrei | 2026-03-27 | ||
| adservio/uni/backend!170 | adservio/uni/backend | [S: ADS-6658][ADS-6660][ADS-7122]: implementari Medii academice pentru situatie scolara | Andrei Alexandru | 2026-03-27 | Yes |
Oldest Active Open MRs (> 48 Working Hours)
| adservio/web!2091 | adservio/web | Andrei Dragan | 181.5d | 5 | |
| adservio/devops/site-sentry!11 | adservio/devops/site-sentry | Daniel Onisoru | 165.0d | 0 | |
| adservio/helm2!137 | adservio/helm2 | Raul Popovici | 157.6d | 0 | |
| adservio/services/websocket!8 | adservio/services/websocket | Raul Popovici | 154.5d | 0 | |
| adservio/services/videothumb!5 | adservio/services/videothumb | Raul Popovici | 154.5d | 0 | |
| adservio/services/fet-generator!9 | adservio/services/fet-generator | Raul Popovici | 154.5d | 0 | |
| adservio/ai/backend!62 | adservio/ai/backend | Robert | 55.6d | 0 | |
| adservio/subscriptions/backend!98 | adservio/subscriptions/backend | Robert | 55.4d | 16 | |
| adservio/web!2323 | adservio/web | Andrei Dragan | 53.6d | 0 | |
| adservio/frontend!1556 | adservio/frontend | George Murgoci | 46.3d | 0 |
Longest Merged Cycles
| adservio/admission/backend!102 | adservio/admission/backend | George Murgoci | 19.0d | 36 | 3 |
| adservio/billing/backend!236 | adservio/billing/backend | Edgar Alexa | 13.9d | 5 | 0 |
| adservio/frontend!1650 | adservio/frontend | Dron Gabriel | 9.1d | 9 | 0 |
| adservio/accommodations/backend!49 | adservio/accommodations/backend | Ionut Ciolan | 8.0d | 19 | 0 |
| adservio/web!2416 | adservio/web | Catalin Cojan | 7.9d | 8 | 0 |
| adservio/web!2418 | adservio/web | Ionut Ciolan | 7.2d | 1 | 3 |
| adservio/uni/backend!170 | adservio/uni/backend | Andrei Alexandru | 5.2d | 26 | 0 |
| adservio/frontend!1667 | adservio/frontend | Achim Stefan | 5.1d | 13 | 0 |
| adservio/web!2423 | adservio/web | Catalin Cojan | 4.9d | 3 | 4 |
| adservio/frontend!1661 | adservio/frontend | Ioana Ivan | 3.2d | 3 | 0 |
Methodology And Limits
- This report uses visible non-author GitLab comments as the strongest review-start proxy.
- GitLab approval API coverage is shown separately; missing approval API data should be read as traceability gap, not proof that no approval happened.
- Review completion uses the first `CR - Approved` label-add event after review starts when GitLab label history provides one; otherwise it falls back to merge time.
- Last-author-commit metrics use the latest non-merge MR commit authored by the MR author strictly before review starts.
- Timing metrics in this report exclude Saturday and Sunday hours using the Europe/Bucharest calendar.
- Review-quality scoring is heuristic: it rewards visible substantive comments, multiple reviewers, and post-review pushes, and it penalizes large MRs with shallow visible discussion.
- `Active open backlog rate` excludes draft MRs and uses a > 48 working-hour age threshold.
- Open MR backlog age is a queue-health signal, not proof that every old open MR is actively waiting for review right now.