Inspiration
A conversion form can look healthy while losing enquiries. Making an optional marketing checkbox required adds a hidden barrier. We chose one concrete visitor journey so the failure, repair and release decision can be checked clearly.
What it does
Conversion Form Release Guard is a fresh, supervised GitLab Duo demonstration for Path A: Start Fresh. A synthetic enquiry form is protected by three Chromium checks: a valid enquiry succeeds, an invalid email is rejected, and declining optional marketing never blocks a valid enquiry. A seed script deliberately breaks only the application consent policy.
The workflow begins with a real failed GitLab pipeline. Duo inspects the failure, identifies the broken consent contract, and authors a one-file application repair on a separate branch. Normal repository CI reruns the unchanged checks. The outcome waits for human review in a draft merge request with a blocking manual approval job.
How we built it
The app uses HTML, CSS and JavaScript with a small Node.js preview server. Playwright tests user behavior in Chromium. GitLab CI uses the matching pinned Playwright image and publishes JUnit and HTML artifacts. Repository instructions, twelve protected-file hashes and a branch-diff guard constrain the repair to application files. These checks support review; they do not replace GitLab permissions or human judgment.
Codex assisted the initial app, tests, CI, documentation and demo preparation. GitLab Duo's maintained Fix CI/CD Pipeline Flow performed the linked diagnosis and authored the actual repair. These contributions are distinct. No simulated Duo execution or fabricated pipeline history is used.
Verified automation
- Seeded pipeline 2989767985: two tests passed and only optional consent failed.
- Duo session 10054322: finished and authored the repair.
- Repair commit 712f79d: changes only public/policy.js.
- Normal CI browser job 17469453131: all three unchanged tests passed, all twelve protected files unchanged, application-only diff verified.
- Draft repair MR !1: open, with the human approval job unplayed. The overall pipeline remains blocked at that checkpoint; nothing is merged or deployed.
Challenges and lessons
Duo's flow-local browser attempt could not launch because Chromium was unavailable there. We disclose that error rather than treating a finished agent session as proof of passing tests. The separate normal GitLab browser job genuinely verified the repair. Independent CI evidence matters.
Running and reviewing
The public MIT repository includes setup instructions, CI history, source and the full evidence guide. Run npm ci, npx playwright install chromium, then npm test. Use npm run evidence to reproduce the healthy and deliberate regression checks; it restores the healthy policy afterward.
The 2:32 video combines an actual local recording of the synthetic form with clearly labeled summaries of verified GitLab evidence, rather than GitLab UI footage. Narration uses a local synthetic voice. This is a demonstration with no real leads, storage, email, analytics, ad integrations or deployment.
What is next
A human reviews the repair diff, source SHA and passing test artifacts before deciding the outcome. Extending the guard to additional form journeys is future work; this submission demonstrates the narrow consent regression loop.
Built With
- gitlab
- javascript
Log in or sign up for Devpost to join the conversation.