Inspiration
Every codebase has a memory; decisions made in old issues, patterns agreed upon in merge request threads, and architectural standards documented and then forgotten. But when a developer pushes a change, that memory is invisible to them. They might bypass a Repository Pattern or re-introduce a deprecated import. Not because they are careless, but because the historical context was never visible at the diff layer.
I realized that GitLab already possesses this historical context via the Orbit Graph. I was inspired to bridge the gap between human conversation and automated enforcement: What if the GitLab Orbit was used to compile a repository's memory into executable rules?
What it does
Veris is a Repository Memory Compiler. It transforms GitLab Orbit from a passive record into an active enforcer.
When code is pushed, Veris queries the live GitLab API to traverse the project's historical merge requests, issue decisions, and code graph. It asks: What did this team agree on? What patterns were deprecated?
It compiles this historical intent into a local, version-controlled rules.json file. Then, the Zero-Token AST (Abstract Syntax Tree) Enforcement Engine sweeps the codebase against those compiled rules. If a developer violates a historical team decision (e.g., using a direct print() statement when the team agreed in Issue #892 to use a strict logger), Veris flags it before it reaches main.
But blocking isn't enough. Veris then synthesizes a clean, structural patch to fix the violation. Crucially, the LLM is only invoked after a deterministic AST rule match, completely eliminating hallucination risk.
How I built it
- Backend: I built the core enforcement engine in Python using
FastAPIand the built-inastmodule. I utilizedurllibto make direct REST API calls to GitLab to extract issue data and compile the dynamicrules.json. - Frontend: I then built a React application using Vite, styled with Tailwind CSS v4 and Framer Motion to create a highly responsive terminal interface.
- Integration: I wrote an asynchronous event generator that streams real-time terminal logs directly to the frontend, proving to developers exactly what Orbit is compiling and what the AST is enforcing in real-time.
Challenges I ran into
My biggest challenge was ensuring True Integrity. Most AI coding tools lack trust because they rely entirely on LLMs to find errors, resulting in massive false-positive rates. I had to figure out how to make Veris 100% deterministic. I solved this by separating the architecture into two distinct phases: Phase 1 is pure Python AST parsing (deterministic, zero false positives), and Phase 2 is Patch Synthesis (LLM-assisted). Building a reliable Python AST node visitor that could dynamically ingest rules from an external API required heavy iteration.
Accomplishments I'm proud of
I am incredibly proud of successfully integrating the GitLab API to pull live, real-world issues into the compiler. It was a eureka moment when I saw the engine dynamically parse a real GitLab URL, extract the historical intent from an issue, and block a code deployment based on a human conversation that happened months ago. I am also incredibly proud of the UI I wanted it to feel like a sleek but not too flashy developer tool, and I did it to the best of my ability on limited time.
What I learned
I learned that the most powerful AI applications in the software development lifecycle are the ones that don't rely on AI for everything. By leaning on GitLab's robust APIs and standard AST parsing, I built a tool that developers can actually trust, while using AI precisely where it shines (generating the final structural patch).
What's next for Veris
The immediate next step is packaging Veris as a native GitLab CI/CD Component, for developers to be able to drop include: component: gitlab.com/veris/enforcer into their .gitlab-ci.yml and instantly have their entire Orbit history compiled and enforced on every single pipeline run.


Log in or sign up for Devpost to join the conversation.