Inspiration
Small teams can mistake several green checks for a verified release, even when they refer to different commits. ReleaseProof gathers one reviewable dossier for one exact GitLab commit. AI explains the evidence; a deterministic gate checks it; a person decides whether to release.
What it does
ReleaseProof checks four exact jobs: tests, security, package and staging. It rejects stale commits, mismatched pipelines, missing or duplicate jobs, incomplete security findings and mismatched package identities. A fifth CI job builds JSON and an escaped, inert HTML dossier with original job links. Ready for review never means production approval.
How we built it
Python standard-library code packages an actual HTTP service into a ZIP, starts that packaged service in ephemeral localhost staging, verifies its health response against the full commit, and stops it. Package and staging manifests must report the same SHA-256. The official GitLab Semgrep analyzer produces SAST evidence. Its original restricted report reaches the dossier through same-pipeline needs:artifacts; a producer manifest binds project, pipeline, security job, full commit and report hash. Public API reads verify the job metadata. No persistent access token was created.
GitLab Duo foundational Agentic Chat performs a supervised, read-only review using real GitLab tools. It reads jobs, logs, artifacts and source, explains findings and proposes a repair. Patches are applied separately; fresh CI verifies the changed commit. The demonstrated integration uses Agentic Chat, not a custom catalog agent.
The real repair loop
Duo reviewed pipeline 2939615695 at commit 1633dfc410354588d2c74052a082c16ce62e1a28, including the original SAST artifact. It identified the Medium SSRF finding bandit.B310-1 at stage_package.py:53 and proposed a fixed-host HTTPConnection in place of a general URL opener. The pipeline Security UI independently showed that finding.
The applied repair fixes the host and path, validates the port, requires HTTP 200 and bounds the response. Fresh pipeline 2939879811 at commit 1ccaffa9231829c2e936219b74423e507d52255a passed all five jobs. Its SAST tab reports zero vulnerabilities. The actual dossier job 17121727802 reports ready_for_review with no blocking reasons and production_deployed false. The generated HTML artifact was opened and verified in the browser.
Challenges
Anonymous SAST artifact access returned 403, and the external collector correctly stayed blocked. We solved collection inside CI through the existing authorized artifact handoff, without removing security restrictions or creating a persistent token. Selecting the authorized competition group as the default GitLab Duo group resolved the credits warning. No paid credits or overage were enabled.
Accomplishments and limits
Nineteen local tests pass, including real packaged-service startup, stale evidence, invalid producer identities, report hash tampering and HTML injection protection. The fresh competition pipeline passed too. Synthetic test fixtures are labeled and never presented as live evidence.
The policy blocks Critical or unknown findings; High findings are recorded but do not block this initial policy. Runner integrity, producer-manifest provenance, scanner coverage and CI configuration remain review assumptions. Matching reported hashes are not an independent proof of an uncompromised build. Staging is an ephemeral localhost process, not a public production deployment. No production deployment, customer adoption, measured time saving or prize qualification is claimed.
What we learned and next steps
An AI explanation helps reviewers, while explicit provenance and deterministic policy prevent unsupported approval. The working supervised loop now goes from actual finding to repair, fresh scan and human-review dossier. MIT source is public. The narrated 2:21 demonstration is published on Tumex Studio as Unlisted and linked in this entry. ReleaseProof was submitted on 13 October 2026.