Inspiration

A green pipeline can hide a bad repair: an agent might remove an assertion, skip a test, or change the command that runs it. Reviewers need to distinguish a source repair from a weakened test contract before deciding what may run.

What FixProof does

FixProof is a dependency-free CI-repair review prototype. It compares a candidate tree with a pinned manifest, permits only one narrowly allowed application-source path to change, and reports changed paths, protected-file hashes and policy violations. Missing tests, altered CI or package scripts, extra files, symlinks, hard links, special files and size violations are rejected before any candidate execution.

Its static review ledger demonstrates six controlled, own-authored scenarios: an unchanged bug, an allowed source repair, weakened tests, changed CI, changed package scripts and deleted tests. Reviewers can inspect the before/after source diff and reasons for rejection without forms, external assets or client-side JavaScript.

Real GitLab Duo Agent Platform integration

FixProof uses a private custom Duo agent with three read-only tools: repository files, commit diffs and job logs. It has no MCP servers, shell, write or merge tools. Runs inherit the invoking user's existing project access; the Showcase-only instruction is a behavioral rule, not a technical access boundary.

In actual session 9862962, the agent read the pinned baseline and unchanged tests, inspected real GitLab job logs, and proposed a one-line whitespace-normalization fix. It was instructed not to inspect the separate authored solution fixture. The exact prompt, copied response and proposed diff are preserved in the public repository's evidence directory.

An operator applied that proposal as data in candidate/. The duo-policy-proof CI job extracted the guard from the original trusted commit and confirmed that only app/normalize.mjs changed; tests, CI and package scripts retained their expected hashes. The generated candidate was NOT executed, merged or deployed. The demonstration of a working repair uses a separate, explicitly labeled, own-authored fixture—not a relabeled Duo result.

Verified results

Pipeline 2974824207, at commit 12ed671c073a875d43cd889700bd4c5a367d260c, passed both fixture-proof and duo-policy-proof jobs. The downloaded unit-test report records 59 passed, zero failed, skipped or cancelled. The original 57 tests remain unchanged and two viewer regression tests were appended. GitLab's Tests summary displays zero because this project does not export JUnit XML; the actual Node test report is available in the job artifacts.

The six-scenario viewer was checked in the browser on desktop, including keyboard toggling, source diff rendering and hash disclosure. Mobile layout is not claimed as verified.

How we built it and what we learned

The implementation uses Node.js built-ins, GitLab CI, the Duo Agent Platform and static HTML/CSS. No third-party package dependencies, real customer data or real payments are involved.

The difficult part was the evidence boundary, not the one-line fix. Authored fixtures must stay distinct from generated proposals; policy acceptance must not become a semantic-correctness claim; repository-owned CI must not be advertised as owner-resistant protection. FixProof makes these distinctions visible.

Limits and next steps

This is Path A: Start Fresh, with assisted review—not supervised or hands-off deployment. The implemented post-code work centers on verification and test-contract governance. It does not claim release, deployment, monitoring, Google Cloud bonus points or measured sustainability benefits.

The prototype ends at a review handoff. A production version would need independently protected guard configuration, human execution approval, appropriate isolation and semantic tests. FixProof is not a security sandbox, does not defeat an owner rewriting CI, and does not establish that every permitted edit is safe or correct. Filesystem races remain a limitation.

Attribution and demo

Prepared with AI assistance, with the genuine Duo contribution identified separately. This is new hackathon work; no SevaRelay source or submitted narrative was reused. The 2:24 captioned, no-audio demo combines 76 seconds of genuine browser screen motion at normal speed—including two Duo review portions with an explicit jump cut and 34 seconds of viewer interaction—with clearly labeled earlier captures of the actual CI, proposal and configuration. The live Duo segment is a read-only evidence follow-up, not a new repair or candidate execution. It is not a continuous end-to-end run.

Built With

Share this project:

Updates

Submission history