Inspiration

GitLab Orbit’s Model Context Protocol (MCP) and code graph indexer represent the vanguard of AI-assisted software development, supplying GitLab Duo agents with rich semantic context. However, code intelligence is only as good as the underlying graph.

I noticed critical gaps in how Orbit mapped compiler-generated structures: Kotlin’s implicit data class utilities (destructuring/copying) and coroutine call edges were invisible to indexer queries.

Furthermore, local contributor setup was hindered by flaky pre-commit hook SIGPIPE errors and ClickHouse DDL application inconsistencies.

I was inspired to build a comprehensive suite of contributions to resolve these issues, streamlining both the indexer’s intelligence and the local developer experience (DevEx).

What it does

My contributions address four key areas across the Orbit repository, all of which have been merged upstream:

  1. Implicit Kotlin Data Class Indexing (Merged - !1660): Added YAML testing fixtures and corrected the indexer’s AST mapping for Kotlin data class autogenerated properties (copy, componentN) and destructuring assignments, preventing parser degradation.
  2. Flaky Pre-Commit Hook SIGPIPE Fix (Merged - !1658): Solved an intermittent hook crash by buffering git log output in ci_skip_requested, preventing SIGPIPE (exit 141) from aborting commits on repositories with large histories.
  3. ClickHouse Schema Deployment Tooling (Merged - !1657): Created apply-graph-schema.sh DDL script, addressing port protocol limitations and ensuring BSD/macOS compatibility.
  4. Kotlin Coroutines and Suspend Functions (Merged - !1672): Implemented integration fixtures verifying syntax extraction of suspend methods and asynchronous call edges in Kotlin coroutines.

How I built it

I analyzed the GitLab Orbit Rust codebase, focusing on the code indexing logic and integration tests:

  • Rust Indexing Tests: I configured comprehensive .yaml fixtures within the integration-tests-codegraph crate to run graph query assertions against the indexer's output database representation.
  • Bash & Shell Scripting: Refined pre-commit scripts, adding output buffering and sequential query pipelines for ClickHouse.

Challenges I ran into

Testing compiler-generated Kotlin features in a Rust-based syntax indexer required tracing exactly how compiler constructs map to code graph nodes. Furthermore, local pre-commit hook debugging was highly timing-dependent due to the nature of pipefail and SIGPIPE. I simulated large commit histories in test environments to isolate and verify the buffering fix.

Accomplishments that I'm proud of

  • Got 4 Merge Requests successfully merged directly into upstream GitLab Orbit repositories during the hackathon.
  • Resolved pipeline-breaking CI issues (yaml invalid and runner capabilities) on forks by tracking and rebasing upstream fixes.
  • Expanded Kotlin indexing accuracy, enabling GitLab Duo agents to better understand modern Kotlin codebases using destructuring and coroutines.
  • Made the local developer workflow significantly faster and more reliable by eliminating flaky commit-hook failures.

What I learned

I gained deep insight into how GitLab Duo utilizes graph representations of code to feed context to AI agents. I also learned the nuances of POSIX pipe signals, BSD vs. GNU utility discrepancies, and native client transport protocols in Model Context Protocol (MCP) servers.

What's next for GitLab Orbit Enhancements

I plan to extend the AST indexer grammar to support newer features in Kotlin 2.x and continue automating schema validation checks.

Built With

Share this project:

Updates