ShipLoop is a task-manager app (Flask) with projects, tasks with todo/doing/done workflow, priorities, due dates, tags, subtasks, filters/sort/pagination, /stats, /activity, /export, and a web UI — backed by an 11-job GitLab CI/CD pipeline (plan, create, verify, package, sbom, sast, secure, release, configure, monitor, govern).
The demo, shown in the video with real session screens:
- One bad push breaks a test and pins
requests==2.19.1(CVE-2018-18074). Pipeline #2989825795 fails at verify. - GitLab Duo's Fix CI/CD Pipeline flow (session 10055391) diagnoses the failure as a test failure, explains it, and posts the fix as an inline suggestion on the merge request; revert the assertion from 202 back to 201. Duo explicitly declines the security pin — a security decision for a human.
- The same push surfaces 19 real dependency findings in the merge request's Security tab (dependency scanning).
- The fixed pipeline passes (#2990107828), and the govern job confirms "LICENSE CHECK PASSED: MIT license present at repo root."
- SAST arc: a planted eval-injection flaw (
/calcwith eval()) is caught by the semgrep SAST job (High, app/risky_demo.py:16); Duo's Security Analyst "Resolve SAST Vulnerability" flow (session 10102821) proposes a safe ast-based evaluator; the fix (MR!3) is merged to main on Oct 27, 10:55 IST, and main's pipeline passes. - Latest main pipeline #2993148107: all 11 jobs green, 29 tests passing. Live demo deployed and verified: /health ok, /calc?expr=1/0 returns a clean 400 error (no 500).
How it uses GitLab Duo Agent Platform
- Fix CI/CD Pipeline flow 1.0.4, run live against a real failed pipeline (session 10055391, Finished). Supervised autonomy: Duo diagnoses and suggests; a human applies.
- Resolve SAST Vulnerability flow via Security Analyst (session 10102821), supervised: Duo proposes the safe-evaluator fix; a human merges.
- Duo Code Review on MR!2 (session 10102107, 4 inline comments, changes requested).
- Duo agent and flow specs live in the repo (
.gitlab/duo/agents-and-flows.md): Review, Secure, and Release specs.
Honest limit (stated in the submission, not hidden)
Supervised, not hands-off: Duo diagnoses, suggests, and proposes; humans apply and merge. MR!1 and MR!2 remain open and unmerged by design (MR!2 is merge-blocked by Duo's own requested changes); MR!3 (the SAST fix) is merged. One Medium SAST finding remains open (Semgrep flask app-run host in app/main.py:351) — the entry does not claim a clean security slate.
Log in or sign up for Devpost to join the conversation.