# How I Shipped 15 Green MRs to GitLab in One Day: Inside Our Modern Contributor Tech Stack

> Source: <https://dev.to/hrlpavan/how-i-shipped-15-green-mrs-to-gitlab-in-one-day-inside-our-modern-contributor-tech-stack-3lbd>
> Published: 2026-10-25 17:07:34+00:00

Contributing to one of the largest open-source platforms in the world is usually described as slow, deliberate, and fraught with complex CI pipelines.

Today, across three distinct upstream GitLab repositories, our engineering pipeline achieved a landmark milestone: **15 out of 15 Merge Requests 100% Green in CI, 100% assigned to maintainers and domain reviewers**, and officially crossing **4,197 live contributor points** on track to the prestigious **Level 4 Contributor milestone (7,500 pts)**.

How do you tackle 15 upstream issues across **Ruby**, **TypeScript**, and **Python** in a single sprint without breaking pipelines or getting bogged down in review cycles?

Here is an architectural breakdown of the **modern tech stack** we use every day to solve GitLab issues at enterprise velocity.

GitLab is no longer just a monolithic Ruby on Rails application. Modern AI-assisted software delivery requires a distributed ecosystem:

```
┌────────────────────────────────────────────────────────────────────────┐
│                        Developer / Agentic Client                      │
│                  (Claude Desktop, Cline, Cursor, Antigravity)          │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ Model Context Protocol (JSON-RPC)
                                    ▼
┌────────────────────────────────────────────────────────────────────────┐
│                   GitLab Core MCP Server (Ruby on Rails)               │
│                  lib/api/mcp/handlers & JSON-RPC Router                │
│                                                                        │
│   • list_pipeline_schedules   • create_merge_request_pipeline          │
│   • list_work_items (filter)  • save_work_item (description_edits)     │
│   • list_user_events          • get_pipeline (poll hints)              │
└───────────────────┬────────────────────────────────┬───────────────────┘
                    │                                │
                    ▼                                ▼
┌──────────────────────────────────────┐  ┌──────────────────────────────┐
│  GitLab LSP (TypeScript / Node.js)   │  │  AI Gateway (Python / FastAPI│
│  editor-extensions/gitlab-lsp        │  │  modelops/.../ai-assist      │
│                                      │  │                              │
│   • Virtual Workspace File Indexing  │  │   • Agent Platform Guard     │
│   • WebSocket Lifecycle & Leak Fix   │  │   • Duo Workflow Service     │
│   • Multibyte UTF-8 Chunk Decoder    │  │   • APIStatusError Handling  │
│   • CLI Slash Command Wake Queue     │  │   • Tool Execution Loop      │
└──────────────────────────────────────┘  └──────────────────────────────┘
```

GitLab Core is pioneering native support for Anthropic's **Model Context Protocol (MCP)** directly within its Rails application (`lib/api/mcp/`). This allows AI agents to interface directly with GitLab issues, pipelines, notes, and work items via structured JSON-RPC.

`rspec:predictive`)
We implemented and polished **9 distinct MCP tool endpoints**:

`list_pipeline_schedules``!264856`): Exposing CI schedule discovery to AI agents.` create_merge_request_pipeline``!264858`): Giving agents the ability to trigger targeted MR pipeline runs.`save_work_item` with `description_edits` & `expected_updated_at``!264862`): Adding optimistic locking and targeted string replacement diffs to prevent concurrent edit collisions.`list_work_items` with `parent_id` hierarchy filter`!264859`): Allowing recursive task tree traversal.` get_pipeline` with `poll_after_seconds` hint`!264863`): Teaching AI agents how long to sleep before polling pipeline status.`list_user_events``!264864`): Activity feed telemetry tool for AI agents.`!264852`): Transparently accepting `query` and `search_term`.`!264853`): Reporting unknown parameter names with suggestions.` save_note` updating`!264854`): Allowing AI agents to update existing issue notes.
In GitLab Rails helpers, never declare unmemoized instance variables (`@variable`). RuboCop will flag this under `Gitlab/PredicateMemoization` or helper encapsulation rules. Clean encapsulation in service classes keeps CI 100% green on the first push!

The `gitlab-lsp` powers language intelligence and Duo AI features inside VS Code, WebIDE, and JetBrains.

`ws`)`!4537`, `#3364`)` NodeJS.Timeout`) was not cleared. Over time, reconnect attempts created zombie timers that leaked memory.

```
   // Explicit cleanup on upgrade rejection
   this.ws.on('unexpected-response', (_req, res) => {
     this.clearHeartbeat();
     this.emit('error', new UpgradeError(res.statusCode));
   });
```

`!4538`, `#3350`)` StringDecoder('utf8')` guarantees chunk boundary safety.`!4536`, `#2381`)
The `ai-assist` repository runs the GitLab AI Gateway—the engine orchestrating large language models and multi-agent execution loops.

`!7641`, `#3394`)`!7642`, `#3345`)` status_code` from client `APIStatusError` exceptions rather than letting unhandled errors cascade into generic HTTP 500 crashes.
| Metric | Standing | Impact | 
|---|---|---|
| **Current Live Score** | **4,197 points** | Verified Level 3 Contributor | 
| **Points Added Today** | **+327 points** | Verified through Contributor API | 
| **Active Merge Requests** | **15 MRs** | 9 in Core, 4 in LSP, 2 in AI Gateway | 
| **CI Success Rate** | **15 / 15 (100% Green)** | Zero test failures | 
| **Reviewer Coverage** | **15 / 15 Assigned** | Zero unassigned MRs | 
| **Unresolved Threads** | **0 Blockers** | Sub-30-minute review SLA readiness | 
| **Projected Total Upon Merge** | **7,545+ points** | **Surpasses Level 4 Target (`7,500 pts`)** | 

*Follow our daily engineering journey across GitHub ([@hrlpavan](https://github.com/hrlpavan)) and GitLab ([@hrlpavan](https://gitlab.com/hrlpavan)).*
